ஆதாயங்கள்:
- மறுசீரமைப்புக்கு முன் தற்போதைய நடத்தையைப் பிடிக்கும் சோதனை பாதுகாப்பு வலையை அமைக்கும் திறன்
- சிறிய, ஒரு-படி, நடத்தை-பாதுகாப்பு மாற்றங்கள் மற்றும் ஒவ்வொரு அடியையும் சரிபார்க்க AI யிடம் கேட்கும் திறன்
- வணிகச் சூழலில் தொழில்நுட்பக் கடனைக் கண்டறிந்து முன்னுரிமை அளிக்கும் திறன்
மறுசீரமைப்பு என்பது ஒரு குறியீட்டின் வெளிப்புற நடத்தையை மாற்றாமல் அதன் உள் கட்டமைப்பை மேம்படுத்துவதாகும்: அதை மேலும் படிக்கக்கூடியதாகவும், எளிமையாகவும், மேலும் பராமரிக்கக்கூடியதாகவும் ஆக்குகிறது. மறுபுறம், தொழில்நுட்பக் கடன் என்பது ஒரு விரைவான தீர்வுக்காக உருவாக்கப்பட்ட ஒரு வடிவமைப்பு சமரசம் மற்றும் காலப்போக்கில் "வட்டியுடன்" திருப்பிச் செலுத்தப்படுகிறது - இன்று நீங்கள் வெட்டிய ஒவ்வொரு மூலையும் நாளை மந்தமாகவோ அல்லது பிழையாகவோ வரும். செயற்கை நுண்ணறிவு ஒரு சக்திவாய்ந்த உதவியாளர், இது மீண்டும் மீண்டும் மற்றும் இயந்திர மறுசீரமைப்பு பணிகளை விரைவுபடுத்துகிறது; ஆனால் மறுசீரமைப்புக்கு ஒரு தங்க விதி உள்ளது, மேலும் AI மட்டுமே அதற்கு உத்தரவாதம் அளிக்க முடியாது: நடத்தை மாறக்கூடாது.
இந்த யூனிட்டில், AI உடன் பாதுகாப்பான மறுசீரமைப்பை எவ்வாறு செய்வது என்பதை நாங்கள் கற்றுக்கொள்கிறோம்: சிறிய மற்றும் மீளக்கூடிய படிகள், சோதனைகள் மூலம் பாதுகாத்தல், குறியீடு வாசனையைக் கண்டறிதல் மற்றும் தொழில்நுட்ப கடனுக்கு முன்னுரிமை அளித்தல். முக்கிய அம்சம் இதுதான்: நடத்தை பாதுகாக்கப்படுவதை நிரூபிக்கும் சோதனைகள், AI இன் வார்த்தை அல்ல.
மறுசீரமைப்பின் கோல்டன் ரூல்: நடத்தை நிலையானது
"நான் மேம்படுத்துகிறேன்" என்று சொல்லும் போது, அறியாமலேயே நடத்தையை மாற்றிக்கொள்வது, மறுசீரமைப்பை ஆபத்தானதாக்குகிறது. ஒரு நிபந்தனையை எளிதாக்கும் போது ஒரு விளிம்பு வழக்கை கைவிடுதல், ஒரு வளையத்தை மாற்றும் போது வரிசையை உடைத்தல், ஒரு செயல்பாட்டைப் பிரிக்கும்போது ஒரு பக்க விளைவைக் காணவில்லை - இவை அனைத்தும் "சுத்தமாகத் தோற்றமளிக்கும்" ஆனால் உடைந்த குறியீட்டை உருவாக்குகின்றன.
அதனால்தான் மறுசீரமைப்பிற்கு சோதனை ஒரு முன்நிபந்தனையாகும்: மாற்றுவதற்கு முன், ஏற்கனவே உள்ள நடத்தையைப் பிடிக்கும் சோதனைகளை நீங்கள் வைத்திருக்க வேண்டும். இந்த சோதனைகள் ஒரு "பாதுகாப்பு வலை"; மறுசீரமைப்பின் போது நீங்கள் தற்செயலாக எதையாவது உடைத்தால், அவை உடைத்து உங்களை எச்சரிக்கும். உங்களிடம் சோதனைகள் இல்லையென்றால், ஏற்கனவே உள்ள நடத்தையை முதலில் சரிசெய்யும் சோதனைகளை எழுதுங்கள் (அலகு 5 இல் நாங்கள் கற்றுக்கொண்டது போல) — இங்குதான் AI ஒரு ஜம்ப் ஸ்டார்ட் பெறுகிறது.
எச்சரிக்கை: டெஸ்ட்நெட் இல்லாமல் AI-உதவி மறுசீரமைப்பு பிழைகளின் மிகவும் நயவஞ்சகமான ஆதாரங்களில் ஒன்றாகும். "நான் நடத்தையைப் பாதுகாத்தேன்" என்று சொல்வது எளிது; மாற்றத்திற்கு முன்னும் பின்னும் ஒரே மாதிரியான சோதனைகள் கடந்து செல்வதே சான்று.
படிப்படியாக: பாதுகாப்பான மறுசீரமைப்பு ஓட்டம்
- பாதுகாப்பு வலையை அமைக்கவும். நீங்கள் மறுவடிவமைக்கும் குறியீட்டின் தற்போதைய நடத்தையைப் பிடிக்கும் சோதனைகள் இருக்கட்டும்; இல்லையெனில், முதலில் அவற்றை எழுதுங்கள் (மற்றும் அவற்றைப் பார்க்கவும்).
- வாசனைக்கு பெயரிடுங்கள். நீங்கள் எதை மேம்படுத்துகிறீர்கள், ஏன்? "இந்தச் செயல்பாடு 3 விஷயங்களைச் செய்கிறது", "அதே லாஜிக் 4 இடங்களில் மீண்டும் வருகிறது", "பெயர்கள் தவறாக வழிநடத்துகின்றன".
- சிறிய, ஒரு-படி படிகளைக் கேளுங்கள். முழு கோப்பையும் மீண்டும் எழுதாமல், ஒற்றை மாற்றத்திற்கு AIயிடம் கேட்கவும் (எ.கா. "இந்தச் செயல்பாட்டை பாதியாகப் பிரிக்கவும்").
- சோதனைகளை இயக்கவும். ஒவ்வொரு அடிக்கும் பிறகு. பச்சை நிறத்தில் இருந்தால் தொடரவும், சிவப்பு நிறத்தில் இருந்தால் திரும்பவும் எடுக்கவும்.
- வேறுபாட்டைப் படியுங்கள். மாற்றம் உண்மையில் நடத்தை-பாதுகாப்பு என்பதை வரிக்கு வரி உறுதிப்படுத்தவும்; AI ஐ "வெறும் கட்டமைப்பு" என்று கூறும்போது ஒரு தர்க்க சறுக்கல் இருக்கலாம்.
- சிறிய துண்டுகளாக இணைக்கவும். பெரிய ஒரு முறை மறுசீரமைப்பு PRகள் ஆபத்தானவை மற்றும் மதிப்பாய்வு செய்ய முடியாதவை.
மூன்று சிறிய வழக்குகள்
வழக்கு 1 — 220-வரி செயல்பாடு பாதுகாப்பாக பிரிக்கப்பட்டது. ஒரு குழுவில் 220-வரி ஆர்டர் செயலாக்க செயல்பாடு இருந்தது. முதல் 14 சோதனைகள் எழுதப்பட்டன (AI இன் உதவியுடன்), அவை தற்போதைய நடத்தையைப் படம்பிடித்தன, அவை அனைத்தும் தேர்ச்சி பெற்றன. பின்னர் செயல்பாடு AI மூலம் படிப்படியாக 5 சிறிய செயல்பாடுகளாக பிரிக்கப்பட்டது; ஒவ்வொரு அடியிலும் சோதனைகள் நடத்தப்பட்டன. ஒரு கட்டத்தில் இரண்டு சோதனைகள் முறியடிக்கப்பட்டன - AI ஒரு விளிம்பில் திரும்புவதைத் தவறவிட்டது. சோதனையில் இதை உடனடியாக பிடித்து சரி செய்தனர். நெட்வொர்க் இல்லாமல், பிழை உற்பத்தி வரை சென்றிருக்கலாம்.
வழக்கு 2 - டெஸ்நெட் இல்லாத பேரழிவு. மற்றொரு டெவலப்பர், AI உடன் எந்த சோதனையும் இல்லாத தேதி கணக்கீடு தொகுதியை "சுத்தம்" செய்தார். குறியீடு சிறப்பாக இருந்தது, ஆனால் அது லீப் ஆண்டைத் தவறாகக் கணக்கிடுகிறது; இரண்டு வாரங்களுக்குப் பிறகு வாடிக்கையாளர் புகார் மூலம் பிழை வெளிவந்தது. மறுசீரமைப்பிலிருந்து சேமிக்கப்பட்ட நேரத்தை விட இழப்பு அதிகமாக உள்ளது. பாடம்: சோதனை இல்லாமல் மறுசீரமைப்பு செய்வது ஒரு சூதாட்டம்.
வழக்கு 3 - தொழில்நுட்ப கடன் முன்னுரிமை. ஒரு குழு AIக்கு 30 அல்லது அதற்கு மேற்பட்ட "மேம்படுத்தக்கூடிய" புள்ளிகளைக் கொடுத்தது மற்றும் ஒவ்வொன்றும் "மாற்ற அதிர்வெண் × ஆபத்து × முயற்சி" அச்சில் அடித்தது. இதன் விளைவாக வரும் அட்டவணையில், அரிதாகவே தொடப்பட்ட ஒரு அசிங்கமான தொகுதி உண்மையில் குறைந்த முன்னுரிமையாக இருந்தது, அதே சமயம் அடிக்கடி மாறும் நடுத்தர-சிக்கலான தொகுதி அதிக முன்னுரிமையாக இருந்தது. அணி தனது ஆற்றலை சரியான இடத்திற்கு செலுத்தியது.
நான்கு நகலெடுக்கக்கூடிய டெம்ப்ளேட்கள்
குறியீடு வாசனை கண்டறிதல் மற்றும் முன்னுரிமை:
இந்தக் குறியீட்டில் மறுசீரமைப்பு வேட்பாளர் "வாசனை" பட்டியல்: நீண்ட செயல்பாடு, மீண்டும் (DRYViolation), தவறாக வழிநடத்தும் பெயர், ஆழமான உள்ளமை நிலை, மறைக்கப்பட்ட பக்க விளைவு, மேஜிக் எண். ஒவ்வொன்றிற்கும்: இடம், ஏன் பிரச்சனை, பரிந்துரைக்கப்பட்ட சிறிய படி, மதிப்பிடப்பட்ட ஆபத்து (குறைந்த/நடுத்தர/உயர்). இன்னும் குறியீட்டை மாற்ற வேண்டாம், திட்டமிடுங்கள்.{{code}}
ஒரு படி, நடத்தை-காக்கும் மாற்றம்:
இதைச் செய்யுங்கள்: {{ஒற்றை மாற்றம், எ.கா. இந்தச் செயல்பாட்டை 3 சிறிய பெயரிடப்பட்ட செயல்பாடுகளாகப் பிரிக்கவும்}}. தெரியும் நடத்தை, கையொப்பம் மற்றும் திரும்ப மதிப்புகளை மாற்றவும். நீங்கள் மாற்றிய அனைத்தும் நடத்தையை ஏன் பாதுகாக்கிறது என்பதை 1 வாக்கியத்தில் எழுதவும்.{{code}}
மறுசீரமைப்பிற்கு முன் பாதுகாப்பு வலை (பண்புச் சோதனை):
இந்தச் செயல்பாட்டின் தற்போதைய நடத்தையைப் பிடிக்கும் சோதனைகளை எழுதவும் (சரியானதா இல்லையா); மறுசீரமைப்பின் போது நடத்தை மாறினால் பிடிக்க வேண்டும். வழக்கமான + விளிம்பு உள்ளீடுகளைச் சேர்க்கவும். செயல்பாட்டின் தற்போதைய வெளியீட்டின் அடிப்படையில் எதிர்பார்ப்புகளை எழுதவும்.{{function}}
தொழில்நுட்ப கடன் பதிவு (பேக்லாக்) உருவாக்கம்:
பின்வரும் வாசனைகளின் பட்டியலை முன்னுரிமை அட்டவணையில் ஊற்றவும்: பொருள், பாதிக்கப்பட்ட பகுதி, மாற்றத்தின் அதிர்வெண் (எனது அறிவு: {{...}}), ஆபத்து, மதிப்பிடப்பட்ட முயற்சி, பரிந்துரைக்கப்பட்ட முன்னுரிமை. அதிக தாக்கம் + குறைந்த முயற்சி ஆகியவற்றை மேலே வைக்கவும். {{smell_list}}
பலவீனமான வரியில் / வலுவான வரியில்
பலவீனமானது: "இந்தக் குறியீட்டைச் சுத்தம் செய்து, அதைச் சிறந்ததாக்குங்கள்."
வலிமையானது: "இந்த 90-வரி செயல்பாட்டை அதன் வெளிப்புற நடத்தை மற்றும் கையொப்பத்தை மாற்றாமல், ஒற்றைப் பொறுப்புடன் 3 சிறிய செயல்பாடுகளாகப் பிரிக்கவும். பக்க விளைவுகளை (DB எழுதுகிறது) தற்போதைய வரிசையில் வைத்திருங்கள். என்னிடம் சோதனைகள் உள்ளன, நடத்தை அப்படியே இருக்க வேண்டும். வித்தியாசத்தைக் கொடுத்து, ஒவ்வொரு பிளவும் ஏன் நடத்தை-பாதுகாப்பு என்று ஒரு வாக்கியத்தில் விளக்கவும். [குறியீடு]"
சக்திவாய்ந்த பதிப்பு; இதற்கு ஒரு குறிப்பிட்ட மாற்றம் தேவைப்படுகிறது, வெளிப்படையாக நடத்தை மற்றும் கையொப்பக் கட்டுப்பாட்டை விதிக்கிறது, மேலும் நியாயப்படுத்தலைக் கோருகிறது. "சிறப்பாகச் செய்" போன்ற தெளிவற்ற கோரிக்கைகள் கட்டுப்பாடற்ற மற்றும் ஆபத்தான மாற்றங்களுக்கு வழிவகுக்கும்.
மறுசீரமைப்பு வகை
AI நம்பகத்தன்மை
முன்நிபந்தனை
மறுபெயரிடுங்கள்
உயர்
நோக்கம் சரியானதா?
செயல்பாடு பிரிவு
நடுத்தர உயர்
டெஸ்ட்நெட் அவசியம்
மீண்டும் மீண்டும் பகிர்தல்
நடுத்தர
நடத்தை வேறுபாடு மறைக்கப்படலாம்
அல்காரிதம்/கட்டமைப்பு மாற்றம்
குறைந்த
விரிவான சோதனை + மனித சரிபார்ப்பு
கட்டடக்கலை மறுசீரமைப்பு
குறைந்த
மனித தலைமையிலான, AI-ஆதரவு
தொழில்நுட்பக் கடனை நிர்வகித்தல், அதை மீட்டமைக்கவில்லை
தொழில்நுட்பக் கடன் எல்லாம் மோசமானதல்ல; சில நேரங்களில் மனப்பூர்வமாக கடன் வாங்குவது (பிரசவத்தை சந்திக்க) சரியான முடிவாகும். கடனை நீக்குவது அல்ல, அதைக் காணக்கூடியதாகவும் சமாளிக்கக்கூடியதாகவும் மாற்றுவதே குறிக்கோள். கடனைக் கண்டறிந்து முன்னுரிமை அளிப்பதில் AI வேகமாக உள்ளது, ஆனால் “எந்தக் கடனைச் செலுத்த வேண்டும், எதைக் கைவிட வேண்டும்” என்பதைத் தீர்மானிக்க வணிகச் சூழல் தேவைப்படுகிறது: இந்த தொகுதி எவ்வளவு அடிக்கடி மாறுகிறது, எத்தனை பேரை பாதிக்கிறது, ஆபத்து என்ன? குறியீட்டு அடிப்படை மற்றும் தயாரிப்பை அறிந்த குழுவால் இந்த முடிவு எடுக்கப்படுகிறது; AI விருப்பங்களை மட்டும் தெளிவுபடுத்துகிறது.
உதவிக்குறிப்பு: நடத்தை மாற்றத்தை உள்ளடக்கிய PR களில் இருந்து உங்கள் மறுசீரமைப்பு PRயை தனித்தனியாக வைத்திருங்கள். "இந்த PR ஒரு மறுசீரமைப்பு மட்டுமே, நடத்தை ஒரே மாதிரியாக உள்ளது" என்று கூறுவது, விசாரணையை எளிதாக்குகிறது மற்றும் சிக்கல் ஏற்பட்டால், காரணத்தை விரைவாகக் குறைக்க உங்களை அனுமதிக்கிறது.
பொதுவான தவறுகள்
- டெஸ்ட்நெட் இல்லாமல் மறுசீரமைப்பு. நடத்தை பாதுகாக்கப்படுகிறது என்பதை நிரூபிக்க உங்களுக்கு எதுவும் இல்லை.
- இதன் பொருள் "முழு கோப்பையும் அழி" என்பதாகும். பெரிய, கட்டுப்பாடற்ற மாற்றங்கள் பிழையை மறைக்கின்றன மற்றும் ஆய்வு செய்ய முடியாது.
- டிஃப்பைப் படிக்காமலே ஏற்றுக்கொள்வது. AI "வெறும் கட்டமைப்பு" என்று கூறியபோது சில தர்க்கங்களை நழுவவிட்டிருக்கலாம்.
- நடத்தை மாற்றத்துடன் குழப்பமான மறுசீரமைப்பு. இரண்டையும் ஒரே PR இல் செய்வது மூல காரணத்தைக் கண்காணிப்பதை சாத்தியமற்றதாக்குகிறது.
- ஒவ்வொரு வாசனையையும் சரிசெய்ய முயற்சிக்கிறது. அரிதாக மாறும் அசிங்கமான குறியீடு பெரும்பாலும் குறைந்த முன்னுரிமை; அடிக்கடி மாறும் இடத்திற்கு ஆற்றலை ஒதுக்குங்கள்.
சுருக்கமாக
மறுசீரமைப்பின் ஒரே விதி என்னவென்றால், நடத்தை மாறாமல் இருக்கும், மேலும் இதற்கான ஆதாரம் சோதனைகள் ஆகும். குறியீட்டு வாசனையைக் கண்டறிவதில், ஒரு-படி மாற்றங்கள் மற்றும் தொழில்நுட்பக் கடனுக்கு முன்னுரிமை அளிப்பதில் AI சக்தி வாய்ந்தது; ஆனால் நீங்கள் பாதுகாப்பு வலையை அமைக்க வேண்டும், சோதனைகளை இயக்க வேண்டும் மற்றும் ஒவ்வொரு அடியிலும் வித்தியாசத்தைப் படிக்க வேண்டும். சிறிய, மீளக்கூடிய படிகளை எடு; நடத்தை மாற்றத்திலிருந்து மறுசீரமைப்பை வேறுபடுத்துதல்; வணிக சூழலை அறிந்த குழு எந்த கடனை செலுத்த வேண்டும் என்பதை முடிவு செய்யட்டும்.
விண்ணப்ப பணி
உங்கள் குறியீட்டுத் தளத்திலிருந்து நீண்ட அல்லது சிக்கலானதாகத் தோன்றும் செயல்பாட்டைத் தேர்வுசெய்யவும். "பாதுகாப்பு வலை" டெம்ப்ளேட்டுடன் அதன் தற்போதைய நடத்தையைப் படம்பிடிக்கும் முதல் அச்சு சோதனைகள் மற்றும் அவை அனைத்தும் தேர்ச்சி பெற்றதா என்று பார்க்கவும். "ஒரு-படி, நடத்தை-பாதுகாக்கும் உருமாற்றம்" மாதிரியுடன் செயல்பாட்டை ஒரே வழியில் (எ.கா. பாதியாகப் பிரித்தல்) மறுவடிவமைத்து, சோதனைகளை மீண்டும் இயக்கவும். சோதனை முறிந்தால், ஏன் என்பதைக் கண்டறியவும்; அது உடைக்கவில்லை என்றால், நடத்தை உண்மையில் பாதுகாக்கப்பட்டதா என்பதை உறுதிப்படுத்த, வரிக்கு வரி வித்தியாசத்தைப் படிக்கவும்.
சரிபார்ப்பு பட்டியல்
- [ ] மறுசீரமைப்பு நடத்தையை மாற்றக்கூடாது என்பதை நான் அறிவேன் மற்றும் அதை நிரூபிக்க சோதனைகள் உள்ளன.
- [ ] ரிஃபாக்டருக்கு முன் தற்போதைய நடத்தையைப் பிடிக்கும் பாதுகாப்பு வலையை அமைக்கிறேன்.
- AI இலிருந்து சிறிய, ஒரு-படி மாற்றங்களை நான் விரும்புகிறேன், பெரிய ஒரு-ஆஃப் அல்ல.
- [ ] ஒவ்வொரு அடிக்கும் பிறகு நான் சோதனைகளை இயக்கி வேறுபாட்டைப் படிக்கிறேன்.
- [ ] நான் நடத்தை மாற்ற PR இலிருந்து தனித்தனியாக PR ஐ மறுசீரமைக்கிறேன்.
- [ ] நான் வணிகச் சூழலுடன் தொழில்நுட்பக் கடனுக்கு முன்னுரிமை அளிக்கிறேன், கண்மூடித்தனமாக பூஜ்ஜியமாக முயற்சிக்கவில்லை.