Fitimet:
- Aftësia për të përdorur AI si një sy të dytë në rishikimin e kodit për lexueshmëri, logjikë dhe siguri
- Aftësia për të planifikuar hapat e rifaktorimit me mbështetjen e AI pa ndërprerë sjelljen komplekse të kodit
- Aftësia për të verifikuar rishikimin e AI dhe modifikimin e rekomandimeve me testimin dhe krahasimin e kontrollit të versioneve
Në inxhinierinë softuerike, kodi lexohet shumë më tepër sesa shkruhet. Një rresht kodi shkruhet një herë, por lexohet, modifikohet dhe ndërtohet mbi dhjetëra herë gjatë muajve. Kjo është arsyeja pse rishikimi i kodit (rishikimi i kodit të dikujt tjetër ose personal për logjikën, lexueshmërinë dhe sigurinë) dhe rifaktorimi (përmirësimi i strukturës së kodit pa ndryshuar sjelljen e tij) janë në qendër të inxhinierisë. Inteligjenca artificiale bëhet një "sy i dytë" i fuqishëm për këto dy detyra: sugjeron shpejt lexueshmërinë, vë në dukje çështjet e anashkaluara të logjikës dhe sigurisë, dhe thyen një rifaktorim të madh në hapa më të vegjël të sigurt. Por ekziston një rregull kritik: rifaktorimi nuk duhet të ndryshojë sjelljen dhe e vetmja gjë që e garanton këtë është testimi.
Në këtë njësi, ne do të shohim se si të përdorim AI në një mënyrë të strukturuar për rishikimin e kodit, si të rregullojmë kodin kompleks pa prishur sjelljen e tij dhe si të menaxhojmë borxhin teknik (vendime të shpejta, por të kushtueshme të kodit).
Konceptet: Borxhi teknik: Vendimet kodike të marra sot për shpejtësinë që vështirësojnë mirëmbajtjen në të ardhmen. Era e kodit: Modele që nuk janë vetë gabime, por tregojnë probleme (funksione shumë të gjata, kode të përsëritura). Regresioni: Kur një ndryshim thyen diçka që funksiononte më parë.
Përdorimi i AI në rishikimin e kodit të strukturuar
Kur koha është e kufizuar, është e nevojshme të përqendroheni në çështjet me rrezik më të lartë. Formatuesi automatik trajton çështjet e formatimit të tilla si dhëmbëzimi dhe hapësira; Ju duhet t'i kushtoni vëmendjen njerëzore logjikës, sigurisë dhe sjelljes së rastit. Kur bëni rishikimin e AI, kërkoni një listë me përparësi, jo një breshëri të thjeshtë rishikimesh.
- Jepni shtrirjen. Çfarë kodi, çfarë të bëni, në çfarë konteksti funksionon.
- Specifikoni boshtin e përparësisë. Saktësia dhe siguria së pari, lexueshmëria së dyti.
- Kërkoni korrigjim konkret. "Pse problemi" dhe "rregullimi i rekomanduar" për çdo gjetje.
- Ju verifikoni gjetjet. AI gjithashtu prodhon pozitivë të rremë; Verifikoni çdo gjetje kundrejt kodit dhe testimit.
Kërkesa e rishikimit të strukturuar: "Shqyrtoni funksionin e mëposhtëm si një inxhinier i vjetër. Rendisni gjetjet sipas rëndësisë dhe shënojini ato me këto etiketa: logjika/siguria [KRITIKE], rasti/performanca [MESAT] e skajit, lexueshmëria/emri [E ULËT]. Për çdo gjetje: pse pyesni, sugjerimi konkret, MOS ndreqni çështjet e automatizimit. Kodi: [code]"
Kërkesa e rishikimit të fokusuar te siguria: "Rishiko këtë kod vetëm për qëllime sigurie: mungesa e vërtetimit të hyrjes, rreziku i injektimit, mungesa e kontrollit të autorizimit, rrjedhja e informacionit konfidencial, parazgjedhjet e pasigurta. Shtoni një shembull skenari sulmi në çdo gjetje. Nëse nuk ka problem sigurie, thoni qartë "Nuk gjeta ndonjë çështje kritike të sigurisë". Kodi: [kodi]".
Kujdes: Vetëm sepse AI thotë "nuk ka problem" nuk është provë se nuk ka asnjë problem. AI mund të prodhojë negativë të rremë; mund të anashkalojë një çështje të vërtetë sigurie. Rishikimi i AI shton, jo zëvendëson, rishikim njerëzor dhe testim sigurie. Në kodin kritik të sigurisë, fjalën e fundit e ka inxhinieri kompetent.
Test-Rifaktorim i ruajtur
Rregulli i artë i rifaktorimit: testoni së pari, ndryshoni më vonë. Para se të rregulloni kodin, duhet të ketë teste që bllokojnë sjelljen aktuale në mënyrë që të dini menjëherë nëse ndryshimi prish diçka. Mos e prishni rendin kur keni rifaktorimin e AI.
- Vëreni sjelljen aktuale në provë. Përndryshe, lëreni AI të prodhojë një "test karakterizimi" (test që kap sjelljen aktuale ashtu siç është).
- Rregullojeni me hapa të vegjël. Testimi duhet të mbetet i gjelbër në çdo hap.
- Drejtojeni atë pas çdo hapi. Kapni herët regresionin.
Kërkesa e planit të rifaktorimit të sigurt: "Funksioni i mëposhtëm me 60 rreshta bën shumë dhe është i vështirë për t'u lexuar. Dua ta rifaktoroj PA ndryshuar sjelljen e tij. Së pari: listoj se cilat raste testimi më nevojiten për të bllokuar sjelljen aktuale. Më pas: ndaje rifaktorimin në hapa të vegjël, secili prej të cilëve mund të ekzekutohet ndërsa testet janë jeshile. Mos e shkruaj ende kodin e planit të parë."
Prompt i dobët / Prompt i fortë
I DOBËT: "Bëni këtë kod më të mirë." (Rezultati: e paqartë se çfarë të përmirësohet; AI bën ndryshime arbitrare, mund të ndryshojë sjelljen në heshtje.) FORT: "Rifaktoroni këtë funksion të llogaritjes së pagesës për lexueshmëri. KUFIZIM: sjellja duhet të mbetet saktësisht e njëjtë, vlerat e kthimit nuk duhet të ndryshojnë. Ndani funksionin e gjatë në funksione të dobishme kuptimplota, duke rritur numrat magjikë në sjelljen e emërtuar me konstante. Listoni kodin H nuk e ndryshon atë. [kodi]"
Prompti i fuqishëm thotë qartë se kufizimi "sjellja duhet të mbetet saktësisht e njëjtë" dhe çfarë duhet përmirësuar. Pa këtë kufizim, AI mund të ndryshojë logjikën në emër të "përmirësimit" dhe të prodhojë një regresion të heshtur.
Menaxhimi i Borxhit Teknik
Qasje
Në afat të shkurtër
në afat të gjatë
duke injoruar borxhin
përparim të shpejtë
Paralizë e mirëmbajtjes, ngadalësim i ekipit
rishkruaj gjithçka
Zhvillimi i tipareve në këmbë
Kthim i pasigurt, rrezik i lartë
Rifaktorim i matur, i mbrojtur me teste
ngadalësim i vogël
Shpejtësi e qëndrueshme
Mënyra më e shëndetshme është e treta: bëjeni borxhin të dukshëm (ndiqni atë në një listë), filloni aty ku ju dhemb më shumë dhe provoni çdo rregullim. IA është një ndihmë e mirë në identifikimin dhe prioritizimin e zërave të borxhit, por cili borxh duhet paguar është një vendim biznesi.
Mini Rastet
Rasti 1 - Regresioni i heshtur. Një zhvillues i thotë AI "të thjeshtojë këtë funksion"; AI e përkthen gabimisht një kusht dhe llogaritja e kthimit është prishur. Meqenëse nuk ka testim, gabimi ndodh pas 3 javësh me një ankesë të klientit. Ekipi bën të njëjtën punë duke shkruar fillimisht një test karakterizimi dhe e kap gabimin me një test të kuq në hapin e parë.
Rasti 2 - Syri i dytë i dobishëm. Në një rishikim të kodit, AI kupton se autorizimi i përdoruesit kontrollohet vetëm në ndërfaqe dhe jo në server. Ky është një cenueshmëri e aksesit të paautorizuar. Inxhinieri shton kontrollin e autorizimit nga ana e serverit; Inspektimi i AI parandalon një incident të vërtetë sigurie.
Rasti 3 - Pozitiv i rremë. AI thotë "kjo variabël nuk përdoret kurrë, fshije atë"; Megjithatë, përdoret në mënyrë indirekte përmes një mekanizmi reflektimi të ndryshueshëm. Nëse inxhinieri nuk do ta verifikonte sugjerimin kundër testit, ai do të fshihej dhe do të ndodhte një gabim në kohën e ekzekutimit. Çdo gjetje e AI duhet të konfirmohet përpara zbatimit.
Gabimet e zakonshme
- Rifaktorimi pa testim. Nuk ka mbetur asgjë për të siguruar që sjellja të ruhet.
- Zbatimi i gjetjeve të AI pa i vërtetuar ato. Të dyja pozitivet e rreme dhe negativet e rreme ndodhin.
- Humbja e kohës njerëzore për problemet e formatit. Përqendrimi në detyrat që mund të zgjidhen me mjete të automatizuara i lë në hije rreziqet reale.
- Marrja e përgjigjes "Nuk ka problem" si garanci. AI mund të anashkalojë cenueshmërinë; kërkohet rishikimi njerëzor.
- Përpjekja për të shlyer të gjithë borxhin menjëherë. Rishkrimet kryesore janë të rrezikshme; Preferohen hapat që maten dhe mbrohen nga testimi.
Në përmbledhje
Rishikimi dhe rifaktorimi i kodit përcakton jetëgjatësinë e kodit. Inteligjenca artificiale është një gjenerues i fuqishëm i syrit të dytë dhe planit: ofron gjetje me prioritet, skenarë sigurie dhe plane rifaktorimi me hapa të vegjël. Por rifaktorimi nuk duhet të ndryshojë sjelljen dhe vetëm testimi e garanton këtë. Vërtetoni çdo gjetje të AI kundrejt kodit dhe testimit; Mos e merrni përgjigjen "pa problem" si provë. Bëjeni të dukshëm borxhin teknik dhe shlyeni atë me hapa të matur dhe të mbrojtur nga testet.
Detyra e aplikimit
Merrni një linjë 40-70, funksion disi kompleks që keni (ose bëni që AI të gjenerojë). Së pari ndiqni kërkesën e rishikimit të strukturuar dhe renditni gjetjet si [KRITIKE]/[MESAT]/[E ULËT]; Verifiko manualisht të paktën një gjetje kundrejt kodit. Më pas, me kërkesën e planit të rifaktorimit të sigurt, fillimisht gjeneroni dhe ekzekutoni testet e karakterizimit, më pas aplikoni rifaktorimin me hapa të vegjël dhe verifikoni që testet të mbeten jeshile në çdo hap.
listë kontrolli
- [ ] Unë e strukturova rishikimin me etiketa prioritare (kritike/mesatare/e ulët).
- [ ] Unë kam verifikuar të paktën një gjetje të AI kundrejt kodit/testit.
- [ ] Kam testuar sjelljen aktuale përpara se të rifaktoroj.
- [ ] I bëra ndryshimet me hapa të vegjël dhe bëra teste në çdo hap.
- [ ] Unë specifikova kufizimin "Sjellja duhet të mbetet e njëjtë" në kërkesë.
- [ ] Unë kam konfirmuar se gjetjet e sigurisë kërkojnë konfirmim njerëzor.