Refaktoreerimise koolitusprojektid: kuidas struktureerida pärandkoodi tööd, mis õpetab tehnilise võla leevendamist

Ühtegi üksust ei leitud.
Blog pisipilt

Meeskond pärib arveldusmooduli, mida keegi täielikult ei mõista. Sellel puuduvad testid, mis kaitseksid olemasolevat käitumist. Selle „puhastamiseks“ pakutakse välja sprint ja plaanis on põhistruktuur uue struktuuriga ümber kirjutada. Keegi ei oska öelda, kuidas nad teavad, et uus versioon arvestab klientidelt endiselt õigesti tasusid.

See on illustreeriv stsenaarium, mitte dokumenteeritud juhtum. See kirjeldab lünka, mille refaktoreerimise koolitusprojekt peab täitma: insenerid, kes näevad, et kood on segane, kuid ei suuda veel planeerida piiratud täiustust ja näidata, et käitumine on säilinud.

See juhend on mõeldud insenerijuhtimise juhtidele ja insenerijuhtidele. See hõlmab jõudlusprobleemi kirjeldamist, lünkade diagnoosimist, disaini ettevalmistamist ja harjutamist, juhtumi läbitöötamist ning oskuste reaalses töös rakendamise hindamist. See käsitleb disaini koolitamist. Teie programmi koodi, teste ja reegleid peaksid valideerima vaneminsenerid teie enda serveripinul.

Mis on refaktoreerimise koolitusprojekt?

Refaktoreerimise koolitusprojekt on struktureeritud töö pärandkoodi kallal, mille eesmärk on nii võimekuse arendamine kui ka koodi täiustamine. Õppijad planeerivad väikese, piiratud muudatuse, kaitsevad olemasolevat käitumist testidega, täiustavad disaini väikeste sammudega ja näitavad tõendeid, et miski pole katki läinud. Kood muutub paremaks ja mis veelgi olulisem, insenerid harjutavad otsustusvõimet, mida nad vajavad reaalse tehnilise võla peal.

Quick faktid

KüsimusLühike vastus
Mis on ülesanne?Piiratud pärandkoodi täiustuse planeerimine ja valideerimine.
Mis punktisumma sa saad?Riskianalüüs ja tõendid olemasoleva käitumise säilimise kohta.
Kas laiaulatuslik ümberkirjutamine on hea koolitusprojekt?Tavaliselt mitte. See varjab harjutatavat oskust ja muudab säilitatud käitumise raskesti demonstreeritavaks.
Kas mustrite refaktoreerimise viktoriinist piisab?Ei. See kinnitab eeltingimusi, aga mitte seda, kas insener suudab muudatust planeerida ja valideerida.
Kes sisu valideerib?Insenerijuht ja vaneminsener, kes tunneb koodibaasi.
Mida treeninguga parandada ei saa?Puuduvad testimisvahendid, vabastusrõhk, ebaselge omanik ja hooldustöödeks pole aega.
Kuidas sa tead, et see toimis?Uus, seni avaldamata pärandkoodi juhtum, mida hinnatakse kokkulepitud kriteeriumide alusel ja millele järgneb reaalse töö järelkontroll.

1. Kirjeldage jõudlusprobleemi

Alusta ülesandest: planeeri ja valideeri piiratud pärandkoodi täiustus. „Piiratud” on oluline sõna. Õppija valib piisavalt väikese muudatuse, et see lõpule viia, ning oskab öelda, mis on ulatuses ja mis mitte.

Terminite täpsus on kasulik. Martin Fowler kirjeldab refaktoreerimist kui kontrollitud tehnika olemasoleva koodibaasi disaini täiustamiseks, mis koosneb väikestest, käitumist säilitavatest transformatsioonidest. Väljend „käitumist säilitav” eristab refaktoreerimist ümberkirjutamisest ja see on see, mida treening peab nähtavaks tegema. Tehniline võlametafoor ise selle lõi Ward Cunninghamja Fowleri arutelu on kasulik meeldetuletus, et võlga saab võtta teadlikult ja kaalutletult, seega ei ole iga segane moodul viga, mida parandada.

Michael Feathersi raamat pärandkoodist võtab praktika osas sama suuna. Kirjastaja kirjelduse kohaselt õpetab see arendajaid kirjutama teste, mis tagavad nad ei muuda rakendust tahtmatultja olemasoleva tarkvara kontrolli alla saamiseks ilma täieliku ümberkirjutamiseta.

Kirjuta toimivusaruanne ühe lausega ja lase insenerijuhil see üle vaadata: „Arvestades pärandmoodulit ja määratletud eesmärki, pakub insener välja piiratud muudatuse, lisab testid, mis täpsustavad praegust käitumist, teeb muudatuse väikeste sammudega ja näitab, et käitumine säilib.“

2. Õppimis- ja kontekstilünga diagnoosimine

Enne kui midagi üles ehitad, võrdle vajalikku ülesannet sellega, mida oma praeguste tegevustega harjutad ja hinda. Tavaliselt eristavad koolituslünka millestki muust kolm küsimust:

  1. Kas praegune praktika kasutab tegelikku ülesannet? Kui koolitus hõlmab slaidide refaktoreerimismustrite kasutamist, kuid keegi ei muuda kunagi testimata koodi, pole keegi harjutanud kaitsvat käitumist. Kui hindamine on valikvastustega test koodi lõhnade kohta, mõõdab see meeldejätmist.
  2. Mis on kognitiivne nõudlus? Bloomi muudetud taksonoomias toimub muudatuse ohutuse hindamine analüüsi ja hindamise tasandil ning plaani ja testide kavandamine jõuab loomise tasandile. Tegevuste sobitamist nende tasemetega käsitletakse meie juhendis. õppetegevuste sobitamine Bloomi taksonoomiaga.
  3. Kas peale oskuste on takistuseks midagi muud? Kontrollige personali, tööriistu ja protseduure. Kui ehitus võtab tund aega, ei tee keegi teste tihti. Kui hooldustöid pole kunagi planeeritud, siis insenerid teevad ümberehitusi ainult salaja. Teatage koolitusevälistest põhjustest inimestele, kes saavad need parandada.

3. Planeeri sihipärane ettevalmistus ja harjutamine

Kui tead, milliseid lünki koolitusega täita saab, anna igale etapile eraldi ülesanne.

Ettevalmistus. Kontrollige eeltingimusi lühikese analüüsi abil: kuidas teie testimisraamistik töötab, mis on iseloomustustest ja kuidas teie meeskond neid üle vaatab ja ühendab. Sellele etapile sobib iseseisvalt õppimine. Meenutuskontroll kinnitab ainult eeltingimusi.

Praktika. Kasutage süstemaatilisi ja selge kujuga refaktoreerimisprojekte. Alustage väikesest ja turvalisest näidisest ning liikuge seejärel oma koodibaasi reaalse, kuid piiratud osa juurde. Gilded Rose kata on esimese sammu tuntud lähtepunkt. Selle README-fail, mida haldab Emily Bache, soovitab enne koodi muutmist testide kirjutamist ja raamistab harjutuse harjutamisena väikeste sammude astumisel, testide sagedasel käivitamisel ja disaini samm-sammult täiustamisel. Iga projekti mõistlik järjekord on: määratle eesmärk ja piirid, kirjuta testid, mis jäädvustavad koodi tänast tegevust, muuda üks asi korraga, käivita testid pärast iga sammu ja kirjuta üles, mida sa õppisid.

Tagasiside. Seo tagasiside otsustega, mitte koguskooriga. „Sa leidsid allahindlusloogika, aga sinu testid hõlmasid ainult õnnelikku teed, seega sa ei pruukinud ümardamismuudatust märgata“ on kasulikum kui „3 viiest“.

Reaalajas juhendaja sisend või asünkroonne arvustus? Reaalajas sisend lisab kõige rohkem väärtust siis, kui valik on ebamäärane, näiteks kas peatada ja lisada puuduv test või jätkata. Asünkroonsest ülevaatest piisab, kui õppijad võrdlevad oma plaani ja teste annoteeritud eksperdi versiooniga. Paljud meeskonnad kasutavad mõlemat: esmalt iseseisvat ettevalmistust ja seejärel keeruliste juhtumite puhul juhendatud sessiooni.

4. Töötage läbi realistlik näide

Illustreeriv. Insenerijuht peaks enne kasutamist juhtumi ja vastusekriteeriumid valideerima.

Juhul. Pärandfunktsioon arvutab tellimuse kogusumma, mis sisaldab allahindlust, maksu ja saatmisreeglit. Sellel pole teste. Meeskond teeb ettepaneku kogu arveldusmoodul ümber korraldada, et muuta see „puhtamaks“.

Ülesanne. Õppija selgitab, mida ta teeks, tsiteerib tõendeid, mida ta koguks, ja ütleb, millist lisateavet või tuge ta vajab.

Esimene katse. „Jagaksin mooduli kolmeks teenuseks ja liigutaksin loogika üle ning kontrolliksin seejärel numbreid etapiviisilises versioonis.“ Õppija on valinud suure muudatuse ja hilise käsitsi kontrolli. Puudub võimalus öelda, kas vana ja uus versioon on äärmusjuhtumite osas ühel meelel.

Tagasiside ja proovi uuesti. Hindaja küsib, mida funktsioon täna teeb tühja ostukorvi, allahindluse korral, mis muudab summa negatiivseks, ja ümardamise korral. Uuesti proovimisel palutakse õppijal kitsendada ulatust ühe käitumisega ja öelda, kuidas ta tõestaks, et see ei muutunud.

Tugevam katse. „Jätaksin mooduli struktuuri praegu rahule. Jäädvustaksin testidena tellimuse kogusumma funktsiooni tänase väärtuse sisendite komplekti, sealhulgas äärejuhtumite kohta. Seejärel eraldaksin allahindluse arvutuse omaette funktsiooniks, käivitaksin pärast seda ühte sammu testid ja lõpetaksin. Märgiksin, et saatmisreeglil on käitumine, millest ma aru ei saa, ja küsiksin enne selle puudutamist kolleegilt.“ Pane tähele, et see vastus piirab muudatust, kaitseb esmalt käitumist ja nimetab tundmatut.

Miks iga vastus on õigustatud või mittetäielik. Hinnake igaüht heakskiidetud kriteeriumide, mitte retsensendi eelistuse alusel. Esimene katse võib olla mõistlik pikaajaline suund, kuid plaanina on see mittetäielik, kuna see ei sisalda tõendeid säilinud käitumise kohta. Tugevam katse on väike, kontrollitav ja ebakindluse suhtes aus.

5. Hinnake võimekust ja plaanige üleandmist

Võimekuse tõendiks on sooritus uue pärandkoodi juhtumi puhul, mida õppija pole varem näinud. Hinnake riskianalüüsi ja tõendeid käitumise säilimise kohta. Lihtne rubriik kasutab kriteeriumi kohta skaalat 0 kuni 2:

KriteeriumVaadeldavad tõendid
Ülesande täitminePlaneerib ja valideerib piiritletud pärandkoodi täiustuse ning dokumenteerib tegevuse ja selle taga olevad tõendid.
PõhjendusSelgitab piiranguid, alternatiive ja ebakindlust ning kontrollib riske ja tõendeid käitumise säilimise kohta.
PiiridKasutab heakskiidetud protseduure ja küsib abi, kui informatsioonist või volitustest ei piisa.

Ankrud: 0 puudub või ei ole toetatud, 1 on osaline oluliste puudujääkidega ja 2 on täielik ja põhjendatud kokkulepitud kriteeriumide alusel. Määrake kriitilised vead eraldi, näiteks käitumise muutumine ilma testita, mis oleks märganud, et üldskoor ei saaks neid varjata. See rubriik on ettepanek, mitte valideeritud valmisoleku standard: kohandage seda koos insenerijuhiga ja katsetage seda. Meie juhend... interaktiivse praktika kujundamine kasuliku tagasiside abil näitab, kuidas kirjutada otsustega seotud tagasisidet.

Planeeri üleandmist teadlikult. Pärast harjutust anna igale insenerile väike, reaalne võlgnevus, mida retsensendiga arutada, või tee lühike tagasivaade hiljutisele muudatusele, mis midagi katki tegi. Kontrolli üleandmist pärast sobivat kokkupuudet reaalse tööga, mitte kohe pärast seminari.

Kus interaktiivne edastamine aitab

Interaktiivsed formaadid on abiks olukorras, kus kõik peaksid enne grupiga kohtumist pühenduma. Otseülekande sessioonil saab juhendaja näidata lühikest pärandkatket, paluda igal inseneril esitada esimene muudatus, mida nad teeksid, ja kuidas nad selle ohutust tõestaksid, ning seejärel enne arutelu avaldada jaotuse. Sama ülesannet saab ettevalmistuseks käivitada ka iseseisvalt. AhaSlides toetab interaktiivset õppimist ja liikumist reaalajas ja iseseisvalt toimuva esituse vahel. See on esitlus- ja õppevahend, mitte koht koodi käivitamiseks või analüüsimiseks, seega käivitage refaktoriseerimine ise oma keskkonnas. Kontrollige kõiki konkreetseid autorimis-, tagasiside- või aruandlusfunktsioone, millele kavatsete oma töövoo suhtes toetuda. Vormingute valimise juhiste saamiseks vaadake meie artiklit Millal kasutada adaptiivset, interaktiivset ja reaalajas õppimist.

Mõõda, mis muutus

Otsusta eelnevalt, mis näitaks, et insenerid suudavad ülesandega toime tulla. Võrdle riskianalüüsi kvaliteeti ja säilinud käitumise tõendeid nähtamatu juhtumi puhul algtasemega. Määratle, kes on kaasatud, nimetaja ja ajastus. Kui tulemused paranevad, kontrolli enne koolituse arvestamist, mis veel samal perioodil muutus, näiteks uued testimisvahendid, kiirem ehitus või omanikuvahetus.

Piirangud, mis võivad jääda

  • Hooldustööde aeg. Kui võlakohustustega seotud tööd kunagi ei planeerita, pole koolitatud inseneridel ikkagi kusagil seda oskust kasutada.
  • Testimisvahendid. Ilma kasutatava testimisrakmestiku või kiire ehituseta on väikeste sammude ja sagedaste kontrollide tegemine keeruline.
  • Juhtumi katvus. Üks pärandjuhtum näitab mitut tüüpi riske. Skoor ei kirjelda inseneri otsustusvõimet üldiselt.
  • Otsustamine, millal mitte ümber faktoriseerida. Mõnda koodi on parem jätta rahule, asendada või pensionile jätta ning see otsus nõuab enamat kui lihtsalt oskusi.
  • Ülekanne. Katas esinemine ei ole sama, mis tootmismoodulis esinemine surve all.

Nimetage need sponsoritele varakult ja planeerige eraldi parandused. Koolitus parandab inseneri planeerimis- ja tõestamisvõimet. See ei loo aega ega tööriistu.

Korduma kippuvad küsimused

Mis on refaktoreerimise koolitusprojekt?

See on struktureeritud praktika pärandkoodil, kus insenerid planeerivad väikese muudatuse, kaitsevad olemasolevat käitumist testidega, muudavad disaini väikeste sammudega ja näitavad, et miski pole katki läinud.

Kas täielik ümberkirjutamine on hea viis tehnilise võla tundmaõppimiseks?

Tavaliselt mitte. Ümberkirjutamine on mahukas, raskesti valideeritav ja varjab oskust, mida soovite arendada. Piiratud muudatus testidega, mis jäädvustavad praegust käitumist, muudab arutluskäigu nähtavaks.

Kuidas hinnata, kas insenerid suudavad ohutult ümber faktoriseerida?

Esitage uus pärandkoodi juhtum ja hinnake riskianalüüsi ning tõendeid selle kohta, et käitumine säilis vastavalt kokkulepitud kriteeriumidele. Refaktoreerimismustrite viktoriin kinnitab ainult eeltingimusi.

Kas vajate koolituse jaoks näidiskoodibaasi?

Sul on vaja kohta, kus turvaliselt harjutada. Paljud võistkonnad alustavad avaliku kataga ja liiguvad seejärel edasi oma koodi piiratud osa juurde. Sinu insenerijuht peaks kinnitama koodi sobivust.

Kust alustada

Vali oma koodibaasis üks väike, korduv pärandmuudatus. Kirjuta toimivusaruanne, lase insenerijuhil juhtum ja testid, mis näitaksid säilinud käitumist, valideerida ning koosta kolmekriteeriumiline rubriik skaalaga 0 kuni 2 ja kriitiliste vigade loeteluga. Enne juurutamist katseta seda väikese rühmaga.

Et näha, kuidas refaktoriseerimise otsustusharjutust saaks teie enda meeskonnaga otseülekandes läbi viia ja hiljem iseseisvalt uuesti kasutada, uurige AhaSlides'i.

Liitu, et saada näpunäiteid, teadmisi ja strateegiaid publiku kaasatuse suurendamiseks.
Aitäh! Teie esildis on laekunud!
Oih! Vormi saatmisel läks midagi valesti.

Vaata ka teisi postitusi

AhaSlidesi kasutavad Forbes America 500 parimat ettevõtet. Kogege kaasatuse jõudu juba täna.

Alustage tasuta
© 2026 AhaSlides Pte Ltd