Бірлік 4 / 12

Кодты шолу, рефакторинг және техникалық қарыз

Табыстар:

  • Оқуға, логикаға және қауіпсіздікке арналған кодты тексеруде AI-ны екінші көз ретінде пайдалану мүмкіндігі
  • Күрделі код әрекетін бұзбай, AI қолдауымен рефакторинг қадамдарын жоспарлау мүмкіндігі
  • Тестілеу және нұсқаны бақылауды салыстыру арқылы AI шолуын тексеру және ұсыныстарды өңдеу мүмкіндігі

Бағдарламалық жасақтамада код жазылғаннан әлдеқайда көп оқылады. Код жолы бір рет жазылады, бірақ айлар ішінде ондаған рет оқылады, өзгертіледі және құрастырылады. Сондықтан кодты қарап шығу (логика, оқылу және қауіпсіздік үшін басқа біреудің немесе өзіңіздің кодыңызды қарап шығу) және рефакторинг (оның мінез-құлқын өзгертпестен код құрылымын жақсарту) инженерияның негізі болып табылады. AI осы екі тапсырма үшін қуатты «екінші көзге» айналады: ол оқылуды тез ұсынады, назардан тыс қалған логика мен қауіпсіздік мәселелерін көрсетеді және үлкен рефакторингті кішігірім қауіпсіз қадамдарға бөледі. Бірақ маңызды ереже бар: рефакторинг мінез-құлықты өзгертпеуі керек және бұған кепілдік беретін жалғыз нәрсе - тестілеу.

Бұл бөлімде біз кодты қарап шығу үшін AI-ны құрылымдық түрде қалай пайдалану керектігін, күрделі кодты оның тәртібін бұзбай қалай түзетуге болатынын және техникалық қарызды қалай басқаруға болатынын (жылдам, бірақ қымбат код шешімдері) көреміз.

Ұғымдар: Техникалық қарыз: Болашақта техникалық қызмет көрсетуді қиындататын жылдамдық үшін бүгін қабылданған код шешімдері. Код иісі: қате емес, бірақ ақауларды көрсететін үлгілер (тым ұзақ функциялар, қайталанатын код). Регрессия: өзгеріс бұрын жұмыс істеп тұрған нәрсені бұзған кезде.

Құрылымдық кодты шолуда AI пайдалану

Уақыт шектеулі болған кезде ең жоғары тәуекелді мәселелерге назар аудару қажет. Автоматты пішімдеуіш шегініс және бос орын сияқты пішімдеу мәселелерін өңдейді; Сіз адамның назарын логикаға, қауіпсіздікке және істің шеткі әрекетіне аударуыңыз керек. AI шолуы кезінде қарапайым шолулар емес, басымдық берілген тізімді сұраңыз.

  1. Ауқымдылықты беріңіз. Қандай код, не істеу керек, қандай контексте жұмыс істейді.
  2. Басымдық осін көрсетіңіз. Біріншіден, дәлдік пен қауіпсіздік, екіншіден оқылу.
  3. Нақты түзетуді сұраңыз. «Неге проблема» және әрбір табылған үшін «ұсынылған түзету».
  4. Сіз қорытындыларды тексересіз. AI сонымен қатар жалған позитивтерді шығарады; Әрбір нәтижені код пен тестілеу арқылы тексеріңіз.

Құрылымдық шолу нұсқауы: "Аға инженер сияқты келесі функцияны тексеріңіз. Нәтижелерді маңыздылығына қарай тізіп, оларды мына тегтермен белгілеңіз: [CRITICAL] логика/қауіпсіздік, [ORTA] шеткі регистр/өнімділік, [LOW] оқылу/атауы. Әрбір нәтиже үшін: неге сұраңыз, нақты түзету ұсынысы. ӨТКІЗІП АЛМАҢЫЗ: оны пішімдеу/ кодтау құралы өңдейді. [код]»

Қауіпсіздікке бағытталған шолу шақыруы: "Бұл кодты тек қауіпсіздік мақсатында қарап шығыңыз: енгізуді тексерудің жоқтығы, енгізу қаупі, авторизацияны бақылаудың жоқтығы, құпия ақпараттың ағуы, қауіпсіз емес әдепкілер. Әрбір нәтижеге шабуыл сценарийін қосыңыз. Қауіпсіздік мәселесі болмаса, "Мен ешқандай маңызды қауіпсіздік мәселелерін таппадым" деп нақты көрсетіңіз. Код: [код]"

Абайлаңыз: AI «проблема жоқ» деп айтуы ешқандай проблема жоқ екенін дәлелдемейді. AI жалған негативтер жасай алады; нақты қауіпсіздік мәселесін айналып өтуге болады. AI шолуы алмастырмайды, толықтырады, адам шолуы және қауіпсіздік сынағы. Қауіпсіздік маңызды кодексте құзыретті инженер соңғы сөзді айтады.

Сынақта сақталған рефакторинг

Рефакторингтің алтын ережесі: алдымен тестілеу, кейінірек өзгерту. Кодты түзетпес бұрын, ағымдағы әрекетті құлыптайтын сынақтар болуы керек, осылайша өзгерту бір нәрсені бұзатынын бірден білуге ​​болады. AI рефакторингі кезінде тәртіпті бұзбаңыз.

  1. Ағымдағы мінез-құлықты сынақтан өткізіңіз. Әйтпесе, AI «сипаттау сынағы» (ағымдағы мінез-құлықты сол қалпында түсіретін сынақ) жасауын сұраңыз.
  2. Оны кішкене қадамдармен түзетіңіз. Тестілеу әр қадамда жасыл болып қалуы керек.
  3. Әр қадамнан кейін оны іске қосыңыз. Регрессияны ерте ұстаңыз.

Қауіпсіз рефакторинг жоспарының шақыруы: "Келесі 60 жолдық функция тым көп жұмыс істейді және оны оқу қиын. Мен оның әрекетін өзгертпей қайта өңдеуді қалаймын. Алдымен: ағымдағы әрекетті құлыптау үшін қандай сынақ жағдайларын тізімдеңіз. Содан кейін: рефакторингті шағын қадамдарға бөліңіз, олардың әрқайсысы сынақтар жасыл болған кезде орындалуы мүмкін. Бірінші кодты әлі жазбаңыз."

Әлсіз шақыру / Күшті шақыру

ƏЛСІЗ: «Бұл кодты жақсартыңыз». (Нәтиже: нені жақсарту керек екені белгісіз; AI ерікті өзгерістер жасайды, мінез-құлықты үнсіз өзгерте алады.) КҮШТІ: "Оқуға ыңғайлы болу үшін осы төлемді есептеу функциясын қайта өңдеңіз. ШЕКТЕУЛЕР: мінез-құлық дәл сол күйінде қалуы керек, мәндерді қайтару қажет емес. Ұзын функцияны мағыналы қызметтік функцияларға бөліңіз, сиқырлы сандарды атаулы тұрақтыларға көбейтіңіз. Тізім оны өзгертпейді және код өзгертпейді. [код]»

Күшті нұсқауда «мінез-құлық дәл сол күйінде қалуы керек» шектеуі және нені жақсарту керектігі анық көрсетілген. Бұл шектеусіз AI логиканы «жетілдіру» атынан өзгертіп, үнсіз регрессия жасай алады.

Техникалық қарызды басқару

Тәсіл

Қысқа мерзімде

ұзақ мерзімді перспективада

қарызды елемеу

жылдам прогресс

Техникалық қызмет көрсету салдануы, команданың баяулауы

бәрін қайта жаз

Тұрақты мүмкіндіктерді дамыту

Белгісіз кіріс, жоғары тәуекел

Өлшенген, сынақтан қорғалған рефакторинг

шамалы баяулау

Тұрақты жылдамдық

Ең пайдалы жол - үшінші: қарызды көрінетін етіп жасаңыз (оны тізімде қадағалаңыз), оның ең ауыратын жерінен бастаңыз және әрбір түзетуді сынақтан өткізіңіз. AI қарыздық элементтерді анықтауға және басымдықты анықтауға жақсы көмектеседі, бірақ қай қарызды төлеу - бизнес шешімі.

Шағын корпустар

1-жағдай — Үнсіз регрессия. Әзірлеуші ​​AI-ға «бұл функцияны жеңілдетуді» айтады; AI шартты қате аударады және қайтару есебі бұзылған. Тестілеу болмағандықтан, қате тұтынушы шағымымен 3 аптадан кейін пайда болады. Топ бірдей тапсырманы алдымен сипаттау сынағы жазу арқылы орындайды және бірінші іске қосуда қатені қызыл сынақпен анықтайды.

2-жағдай — Пайдалы екінші көз. Кодты шолу кезінде AI пайдаланушы авторизациясы серверде емес, интерфейсте ғана тексерілетінін түсінеді. Бұл рұқсат етілмеген қатынас осалдығы. Инженер серверлік авторизацияны тексеруді қосады; AI тексеруі нақты қауіпсіздік оқиғасының алдын алады.

3-жағдай – Жалған оң. AI «бұл айнымалы ешқашан пайдаланылмайды, оны жойыңыз» дейді; Дегенмен, ол ауыспалы шағылыстыру механизмі арқылы жанама түрде қолданылады. Егер инженер сынаққа қарсы ұсынысты тексермесе, ол жойылып, орындалу қатесі орын алатын еді. Әрбір AI қорытындысы енгізілмес бұрын расталуы керек.

Жалпы қателер

  • Тестілеусіз рефакторинг. Мінез-құлықтың сақталуын қамтамасыз ету үшін ештеңе қалмайды.
  • AI нәтижелерін растамай қолдану. Жалған позитивтер де, жалған негативтер де орын алады.
  • Пішім мәселелеріне адам уақытын ысырап ету. Автоматтандырылған құралдар арқылы шешуге болатын тапсырмаларға назар аудару нақты тәуекелдерге көлеңке түсіреді.
  • Кепілдік ретінде «Мәселе жоқ» деген жауапты алу. AI осалдықты айналып өте алады; адам тексеруі қажет.
  • Бүкіл қарызды бірден жабуға тырысады. Негізгі қайта жазулар қауіпті; Тестілеу арқылы өлшенетін және қорғалған қадамдарға артықшылық беріледі.

Қысқаша

Кодты қарап шығу және рефакторинг кодтың қызмет ету мерзімін анықтайды. AI - қуатты екінші көз және жоспар генераторы: басымдылықтарды, қауіпсіздік сценарийлерін және шағын қадамдық рефакторинг жоспарларын қамтамасыз етеді. Бірақ рефакторинг мінез-құлықты өзгертпеуі керек және тек тестілеу бұған кепілдік береді. Әрбір AI табылғанын код пен тестілеу арқылы растаңыз; «Мәселе жоқ» деген жауапты дәлел ретінде қабылдамаңыз. Техникалық қарызды көрінетін етіп жасаңыз және оны өлшенген, сынақтан қорғалған қадамдармен төлеңіз.

Қолданбалы тапсырма

40-70 жолды алыңыз, сізде біршама күрделі функция бар (немесе AI жасайды). Алдымен құрылымдық шолу нұсқаулығын орындаңыз және нәтижелерді [КРИТИКАЛЫҚ]/[ОРТАША]/[ТӨМЕН] ретінде сұрыптаңыз; Кодқа қарсы кем дегенде бір табуды қолмен растаңыз. Содан кейін, қауіпсіз рефакторинг жоспарының шақыруымен алдымен сипаттау сынақтарын жасаңыз және іске қосыңыз, содан кейін шағын қадамдармен рефакторингті қолданыңыз және сынақтардың әр қадамда жасыл болып қалатынын тексеріңіз.

бақылау парағы

  • [ ] Мен шолуды басымдық тегтерімен құрылымдадым (сыни/орташа/төмен).
  • [ ] Мен кодқа/сынаққа қарсы кем дегенде бір AI табылғанын тексердім.
  • [ ] Мен рефакторингтен бұрын ағымдағы әрекетті тексердім.
  • [ ] Мен өзгертулерді шағын қадамдармен жасадым және әр қадамда сынақтарды орындадым.
  • [ ] Мен шақыруда "Мінез-құлық өзгеріссіз қалуы керек" шектеуін көрсеттім.
  • [ ] Мен қауіпсіздік нәтижелері адамның растауын қажет ететінін растадым.