Kodo valymas be klaidų: kaip padaryti seną kodą skaitomesnį ir patikimesnį

Kodo valymas be klaidų: kaip padaryti seną kodą skaitomesnį ir patikimesnį

Kiekvienas programuotojas tai pažįsta: senas kodas, kuris „tiesiog veikia“, bet kurio niekas nedrįsta liesti. Galbūt jį parašė kolega, kuris jau seniai dirba kitur, o gal pats – per įtemptą projektą prieš kelerius metus. Kodo funkcionalumas išlieka, tačiau jis sunkiai skaitomas, sunkiai keičiamas ir dar sunkiau testuojamas. Kodo valymas, arba refaktoringas, – tai procesas, kai geriname kodo struktūrą nekeisdami jo elgsenos. Tam reikia kantrybės, aiškios strategijos ir pagarbos esamam darbui. Štai keli patarimai, kaip sutvarkyti seną kodą neįvedant naujų klaidų.
Pirmiausia – suprask, o ne keisk
Labai vilioja iškart perrašyti viską iš naujo, tačiau pirmasis žingsnis visada turi būti supratimas, ką kodas daro. Perskaityk jį, sek duomenų srautą, pabandyk susidaryti bendrą logikos vaizdą. Naudok įrankius, tokius kaip debuggeriai ar call graph analizės, kad pamatytum, kaip funkcijos sąveikauja tarpusavyje.
Verta rašytis trumpas pastabas: ką daro ši funkcija? Kodėl egzistuoja šis kintamasis? Kokias prielaidas daro kodas? Tokie užrašai padeda ne tik suprasti, bet ir dokumentuoti, kad vėliau kiti (ar tu pats) galėtų lengviau sekti mintį.
Sukurk saugumo tinklą: testuok prieš keisdamas
Prieš pakeisdamas bent vieną eilutę, įsitikink, kad galėsi pastebėti, jei kas nors sugrius. Tai reiškia – testus. Jei projekte jau yra automatinių testų, paleisk juos ir patikrink, ar jie apima svarbiausias kodo dalis. Jei testų nėra, parašyk bent kelis paprastus, kurie patvirtintų, kad dabartinis elgesys teisingas.
Net keli testai gali padaryti didelį skirtumą. Jie veikia kaip saugumo tinklas, kuris pagaus klaidas, kai pradėsi tvarkyti kodą. Tai suteikia pasitikėjimo ir leidžia dirbti mažais, saugiais žingsniais.
Tvarkyk po truputį
Kodo valymas turėtų vykti palaipsniui. Užuot perrašęs visą modulį iš karto, susitelk į mažas, aiškiai apibrėžtas dalis. Tai gali būti viena funkcija, pasikartojantis kodo fragmentas ar net tik pavadinimų sistema.
Po kiekvieno pakeitimo paleisk testus. Jei viskas veikia – eik toliau. Jei kažkas sugriuvo, žinai, kur ieškoti. Toks iteratyvus požiūris leidžia išlaikyti kontrolę ir sumažina riziką.
Padaryk kodą skaitomesnį
Skaitomumas – patikimo kodo pagrindas. Tvarkydamas kodą, vis klausk savęs: ar naujas programuotojas suprastų šią vietą be papildomų paaiškinimų? Jei ne, pagalvok, kaip ją pagerinti:
- Naudok prasmingus pavadinimus – venk trumpinių ar vidinių juokelių. Geras pavadinimas iškart pasako, ką daro kintamasis ar funkcija.
- Skaidyk ilgas funkcijas – viena funkcija turėtų atlikti vieną užduotį. Jei ji daro per daug, padalink ją.
- Šalink pasikartojantį kodą – dubliuota logika didina klaidų riziką. Bendras funkcionalumas turėtų būti vienoje vietoje.
- Rašyk trumpus komentarus – ne tam, kad paaiškintum ką kodas daro, o kodėl jis tai daro.
Net maži struktūros ir pavadinimų patobulinimai gali smarkiai pagerinti kodo kokybę ir komandos darbą.
Naudok įrankius ir standartus
Dauguma šiuolaikinių kūrimo aplinkų turi įrankius, kurie padeda automatiškai aptikti ir taisyti problemas. Linteriai, formatavimo įrankiai ir statinė analizė gali parodyti nenaudojamus kintamuosius, stiliaus neatitikimus ar galimas klaidas.
Taip pat verta laikytis bendrų komandos kodavimo standartų. Tai užtikrina vienodą stilių ir palengvina skaitymą – nesvarbu, kas rašė kodą. Daugelis komandų naudoja automatinius formatavimo įrankius, kad išvengtų ginčų dėl tarpų ar kabliataškių.
Dokumentuok pokyčius
Tvarkydamas kodą, dokumentuok savo sprendimus. Kodėl pakeitei funkciją? Kokių prielaidų atsisakei? Kurios vietos vis dar trapios? Trumpa pastaba „commit“ žinutėje ar komentare gali sutaupyti daug laiko ateityje.
Gera dokumentacija nėra ilgi vadovai – tai aiškus paaiškinimas, kodėl buvo priimti tam tikri sprendimai.
Sustok, kai pakanka
Kodo valymas gali tęstis be galo. Visada bus ką patobulinti. Tačiau tikslas nėra tobulumas – tik pagerinimas. Kai kodas tampa aiškesnis, lengviau testuojamas ir be didžiausių spąstų, vadinasi, pasiekei tikslą.
Svarbiausia, kad kodas tapo patikimesnis ir paruoštas ateities pokyčiams – be naujų klaidų.
Investicija, kuri atsiperka
Kodo valymas gali atrodyti kaip nuobodus darbas, bet tai investicija į ateitį. Kiekvienas patobulinimas sutaupo laiko ir nervų vėliau. Tu palengvini darbą sau ir kolegoms, sumažini riziką, kad smulkios klaidos virs didelėmis problemomis.
Galiausiai kodo valymas – tai pagarba: savo darbui, komandos nariams ir produktui, kurį kuri.









