Unità 8 / 12

Refactoring u Ġestjoni Teknika tad-Dejn

Qligħ:

  • Kapaċità li titwaqqaf xibka tas-sikurezza tat-test li taqbad l-imġieba attwali qabel ir-refactoring
  • Kapaċità li titlob lill-AI għal trasformazzjonijiet żgħar, f'pass wieħed, li jippreservaw l-imġieba u tivvalida kull pass
  • Kapaċità li tidentifika u tipprijoritizza d-dejn tekniku fil-kuntest tan-negozju

Ir-refactoring qed itejjeb l-istruttura interna ta' kodiċi mingħajr ma jbiddel l-imġieba esterna tiegħu: jagħmilha aktar leġibbli, aktar sempliċi, aktar miżmuma. Id-dejn tekniku, min-naħa l-oħra, huwa kompromess ta’ disinn magħmul għall-fini ta’ soluzzjoni ta’ malajr u mħallas lura “bl-imgħax” maż-żmien — kull rokna li taqta’ llum terġa’ lura bħala tnaqqis jew bug għada. L-intelliġenza artifiċjali hija assistent b'saħħtu li tħaffef il-kompiti ta 'refactoring ripetittivi u mekkaniċi; Iżda hemm regola tad-deheb waħda tar-refactoring, u l-AI waħedha ma tistax tiggarantixxiha: l-imġiba m'għandhiex tinbidel.

F'din l-unità, nitgħallmu kif nagħmlu refactoring sikur bl-AI: passi żgħar u riversibbli, nipproteġu bit-testijiet, niskopru rwejjaħ tal-kodiċi u nipprijoritizzaw id-dejn tekniku. Il-punt kritiku huwa dan: huma t-testijiet li jgħaddu, mhux il-kelma tal-AI, li jipprova li l-imġieba hija ppreservata.

Ir-Regola tad-Deheb tar-Refactoring: L-Imġieba Tibqa 'Kostanti

Dak li jagħmel ir-refactoring perikoluż huwa bla ma jkun jaf ibiddel l-imġiba filwaqt li tgħid "Qed intejjeb." Twaqqa 'każ tarf meta tissimplifika kundizzjoni, tkisser l-ordni meta tittrasforma linja, nieqes effett sekondarju meta tinqasam funzjoni—kollha tipproduċi kodiċi "dehra nadifa" iżda miksur.

Huwa għalhekk li l-ittestjar huwa prerekwiżit għar-refactoring: qabel ma tinbidel, irid ikollok testijiet li jaqbdu l-imġieba eżistenti. Dawn it-testijiet huma "xibka ta' sikurezza"; Jekk aċċidentalment tkisser xi ħaġa waqt ir-refactoring, dawn se jkissru u jwissuk. Jekk ma jkollokx testijiet, ikteb testijiet li jiffissaw l-imġieba eżistenti l-ewwel (kif tgħallimna fl-unità 5) — dan huwa fejn l-AI tibda qabża.

Attenzjoni: Ir-refactoring assistit mill-AI mingħajr testnet huwa wieħed mill-aktar sorsi insidjużi ta' bugs. Huwa faċli li tgħid "I ppreservat l-imġieba"; Il-prova hija li l-istess testijiet jgħaddu qabel u wara l-bidla.

Pass pass: Fluss ta' Refactoring Sikur

  1. Waħħal ix-xibka tas-sigurtà. Ħalli jkun hemm testijiet li jaqbdu l-imġieba attwali tal-kodiċi li se tirrefactor; Jekk le, iktebhom l-ewwel (u arahom jgħaddu).
  2. Semmi r-riħa. X'qed ittejjeb u għaliex? "Din il-funzjoni tagħmel 3 affarijiet", "l-istess loġika tirrepeti f'4 postijiet", "l-ismijiet huma qarrieqa".
  3. Itlob għal passi żgħar f'pass wieħed. Staqsi lill-AI għal trasformazzjoni waħda (eż. sempliċement "qassam din il-funzjoni bin-nofs"), biex ma tiktebx mill-ġdid il-fajl kollu.
  4. Mexxi t-testijiet. Wara kull pass. Jekk huwa aħdar, kompli, jekk huwa aħmar, ħudha lura.
  5. Aqra Diff. Ikkonferma linja b'linja li l-bidla hija tabilħaqq li tippreserva l-imġieba; Jista 'jkun hemm slippage loġika meta tgħid AI hija "sempliċement struttura".
  6. Għaqqad f'biċċiet żgħar. PRs kbar ta' rifactoring ta' darba huma kemm riskjużi kif ukoll mhux riveduti.

Tliet Każijiet Mini

Każ 1 — Funzjoni ta '220 linja maqsuma b'mod sikur. Tim wieħed kellu funzjoni ta 'pproċessar ta' ordni ta '220 linja. Inkitbu l-ewwel 14-il test (bl-għajnuna ta 'AI) li qabdu l-imġieba attwali, kollha għaddew. Imbagħad il-funzjoni kienet maqsuma f'5 funzjonijiet iżgħar pass pass mill-AI; It-testijiet saru wara kull pass. Żewġ testijiet tkissru f'pass wieħed - l-AI kienet tilfet ir-ritorn f'każ tat-tarf. It-testijiet qabdu dan immedjatament u rranġawh. Mingħajr in-netwerk, l-iżball seta' mar it-triq kollha għall-produzzjoni.

Każ 2 — Diżastru mingħajr testnet. Żviluppatur ieħor "naddaf" modulu tal-kalkolu tad-data li ma kellu l-ebda testijiet bl-AI. Il-kodiċi deher aħjar, iżda kien qed jikkalkula s-sena biżestili b'mod żbaljat; Il-bug ħareġ ġimgħatejn wara b'ilment tal-klijent. It-telf qabeż bil-bosta l-ħin iffrankat mir-refactoring. Lezzjoni: refactoring mingħajr ittestjar huwa azzard.

Każ 3 — Prijoritizzazzjoni teknika tad-dejn. Tim wieħed ta lill-AI xogħol b'lura ta' 30 jew aktar punt "li jista' jittejjeb" u kellu kull wieħed skorja fuq assi "frekwenza tal-bidla × riskju × sforz". Fit-tabella li tirriżulta, modulu ikrah li rari kien mimsus kien fil-fatt prijorità baxxa, filwaqt modulu ta 'kumplessità medja li jinbidel ta' spiss kien prijorità għolja. It-tim idderieġa l-enerġija tiegħu lejn il-post it-tajjeb.

Erba' Mudelli Kopjabbli

Sejbien u prijoritizzazzjoni tar-riħa tal-kodiċi:

Lista tal-kandidati tar-refactoring "irwejjaħ" f'dan il-kodiċi: funzjoni twila, irrepeti (DRYViolation), isem qarrieqi, kundizzjoni nested profonda, effett sekondarju moħbi, numru maġiku. Għal kull: post, għaliex il-problema, pass żgħir issuġġerit, riskju stmat (baxx/medju/għoli). TBIDLIX kodiċi għadha, ippjana biss.{{code}}

Trasformazzjoni f'pass wieħed, li tippreserva l-imġieba:

BISS agħmel dan: {{konverżjoni waħda, eż. Aqsam din il-funzjoni fi 3 funzjonijiet iżgħar msemmija}}. IBDELL l-imġieba viżibbli, il-firma u l-valuri tar-ritorn. Ikteb f'sentenza waħda għaliex dak kollu li bdilt jippreserva l-imġieba.{{code}}

Netwerk ta' sikurezza qabel il-refactor (ittestjar ta' karatterizzazzjoni):

Ikteb testijiet li jaqbdu l-imġieba KURRENTI ta’ din il-funzjoni (korretta jew le); l-għan huwa li taqbad jekk l-imġieba tinbidel waqt ir-refactoring. Inkludi tipiċi + entrati tarf. Ikteb l-aspettattivi bbażati fuq l-output kurrenti tal-funzjoni.{{funzjoni}}

Ġenerazzjoni tar-rekord tekniku tad-dejn (backlog):

Ferra l-lista ta' rwejjaħ li ġejja f'tabella ta' prijoritizzazzjoni: sustanza, żona affettwata, frekwenza tal-bidla (l-għarfien tiegħi: {{...}}), riskju, sforz stmat, prijorità rakkomandata. Poġġi l-impatt għoli + dawk ta 'sforz baxx fil-quċċata. {{smell_list}}

Pront dgħajjef / Pront qawwi

Dgħajjef: "Naddaf dan il-kodiċi u għamilha aħjar."
Qawwija: "Aqsam din il-funzjoni ta' 90 linja fi 3 funzjonijiet iżgħar b'responsabbiltà waħda, mingħajr ma tbiddel l-imġieba esterna u l-firma tagħha. Żomm l-effetti sekondarji (DB jikteb) fl-ordni attwali. Għandi testijiet, l-imġieba għandha tibqa 'l-istess. Agħti d-differenza u spjega f'sentenza waħda għaliex kull qasma qed tippreserva l-imġieba. [kodiċi] ".

Verżjoni qawwija; Hija teħtieġ trasformazzjoni speċifika waħda, espliċitament timponi restrizzjoni ta 'mġieba u firma, u titlob ġustifikazzjoni. Talbiet vagi bħal "tagħmel aħjar" iwasslu għal bidliet mhux ikkontrollati u riskjużi.

Tip ta' refactoring

Affidabbiltà tal-AI

Prerekwiżit

semmi mill-ġdid

għolja

L-ambitu huwa korrett?

Diviżjoni tal-funzjoni

medju-għoli

Testnet huwa meħtieġ

Qsim ripetizzjoni

medju

Id-differenza fl-imġieba tista’ tkun moħbija

Bidla fl-algoritmu/istruttura

baxx

Ittestjar estensiv + validazzjoni umana

Riarranġament arkitettoniku

baxx

Immexxi mill-bniedem, appoġġjat mill-AI

Ġestjoni tad-Dejn Tekniku, Mhux Irrisettjar

Id-dejn tekniku mhux kollu ħażin; Xi drabi self konxju (biex tissodisfa kunsinna) hija d-deċiżjoni t-tajba. L-għan mhuwiex li jiġi eliminat id-dejn, iżda li jagħmilha viżibbli u maniġġabbli. L-AI hija mgħaġġla biex tiskopri u tipprijoritizza d-dejn, iżda tiddeċiedi "liema dejn għandu jitħallas u liema għandu jiġi abbandunat" teħtieġ kuntest tan-negozju: kemm-il darba jinbidel dan il-modulu, kemm nies jaffettwa, x'inhu r-riskju? Din id-deċiżjoni tittieħed mit-tim li jaf il-bażi tal-kodiċi u l-prodott; AI tiċċara biss l-għażliet.

Tip: Żomm il-PR refactoring tiegħek separat mill-PRs li jinvolvu bidla fl-imġieba. Li tkun tista 'tgħid "dan il-PR huwa biss refactoring, l-imġieba hija l-istess" tagħmilha aktar faċli biex tinvestiga u tippermettilek li tnaqqas malajr il-kawża jekk tinqala' problema.

Żbalji komuni

  • Refactoring mingħajr testnet. Inti titħalla mingħajr xejn li tipprova li l-imġieba hija ppreservata.
  • Dan ifisser "file kollu ċar". Bidliet kbar u mhux ikkontrollati jaħbu l-iżball u ma jistgħux jiġu eżaminati.
  • Taċċetta Diff mingħajr ma taqrah. L-AI setgħet naqset xi loġika meta qalet "struttura biss".
  • Refactoring konfużjoni ma 'bidla fl-imġieba. Li tagħmel it-tnejn fl-istess PR jagħmel impossibbli l-intraċċar tal-kawża ewlenija.
  • Jipprova jirranġa kull riħa. Kodiċi ikrah li rarament jinbidel ħafna drabi jkun ta’ prijorità baxxa; Alloka l-enerġija għall-post li jinbidel ta 'spiss.

Fil-qosor

L-unika regola ta 'refactoring hija li l-imġieba tibqa' kostanti, u l-prova ta 'dan hija t-testijiet. L-AI hija b'saħħitha biex tiskopri rwejjaħ ta 'kodiċi, trasformazzjonijiet f'pass wieħed, u tipprijoritizza dejn tekniku; imma trid twaqqaf ix-xibka tas-sigurtà, tmexxi t-testijiet u aqra d-diff wara kull pass. Ħu passi żgħar u riversibbli; jiddistingwu r-refactoring minn bidla fl-imġieba; u ħalli t-tim li jaf il-kuntest tan-negozju jiddeċiedi liema dejn għandu jħallas.

Kompitu ta' applikazzjoni

Agħżel funzjoni mill-bażi tal-kodiċi tiegħek li tidher twila jew kumplessa għalik. L-ewwel testijiet tal-istampar li jaqbdu l-imġieba attwali tiegħu bil-mudell ta '"xibka ta' sikurezza" u ara jekk jgħaddux kollha. Imbagħad agħmel il-funzjoni refactored b'mod wieħed (eż. qsim min-nofs) bil-mudell ta '"pass wieħed, trasformazzjoni li jippreserva l-imġieba" u erġa' wettaq it-testijiet. Jekk jitkisser test, sib għaliex; Jekk ma tinkiser xejn, aqra d-diff linja b'linja biex tikkonferma li l-imġieba hija tabilħaqq ippreservata.

lista ta' kontroll

  • [ ] Naf li r-refactoring m'għandux ibiddel l-imġiba u hemm testijiet biex jipprovah.
  • [ ] Qed inwaqqaf xibka ta' sikurezza li taqbad l-imġieba attwali qabel il-refactor.
  • [ ] Irrid trasformazzjonijiet żgħar, f'pass wieħed mill-AI, mhux kbar ta' darba.
  • [ ] Wara kull pass nagħmel it-testijiet u naqra d-diff.
  • [ ] Nibqa' nirrefactoring PR separat mill-PR tal-bidla fl-imġiba.
  • [ ] Jiena nipprijoritizza d-dejn tekniku bil-kuntest tan-negozju, mhux bl-addoċċ nipprova niżero.