Ako vývojár, ako začať pracovať na novom projekte...??
Najprv zhromaždíte niekoľko základných požiadaviek a potom na základe požiadavky začnete funkciu jednu po druhej implementovať. Ako postupujete vo svojom projekte a dozviete sa o ňom viac, neustále pridávate a meníte kód vo svojej kódovej základni. Neskôr tiež zmeníte kód na opravu chýb a okrajových prípadov.

Čo sa však stane po niekoľkých dňoch alebo mesiacoch...? Ako vyzerá váš kód...?? je to komplikované? Je to ťažké pochopiť? Ak áno, určite ste nevenovali pozornosť zlepšeniu kódu alebo jeho reštrukturalizácii. Možno ste napísali nejaký duplicitný kód bez toho, aby ste sa pozreli na existujúci kód, alebo ste napísali nejaké dlhšie metódy/funkcie, veľké triedy, príliš veľa parametrov, neintuitívne názvy premenných, umiestnenie kódu atď.
Zlepšenie alebo aktualizácia kódu bez zmeny funkčnosti softvéru alebo externého správania aplikácie sa nazýva refaktoring kódu. Znižuje technické náklady a robí kód efektívnejším a udržiavateľnejším. Ak nevenujete pozornosť procesu refaktorovania kódu skôr, za chyby v kóde zaplatíte neskôr. Preto neignorujte čistenie kódu.
V procese vývoja softvéru majú rôzni vývojári rôzne štýly písania kódu. Vykonávajú zmeny, udržiavajú kód, rozširujú kód a väčšinou kód opúšťajú bez neustáleho refaktorovania. Nerefaktorovaný kód má tendenciu kód rot: veľa zmätku a neporiadku v kóde, ako je duplicitný kód, nezdravé závislosti medzi triedami alebo balíkmi, zlé rozdelenie zodpovedností za triedy, príliš veľa zodpovedností na metódu alebo triedu atď. Aby sa predišlo všetkým týmto problémom, je dôležité neustále refaktorovanie.
Teraz je otázka… aké sú techniky refaktorovania kódu?
Budeme diskutovať o niektorých populárnych a bežných technikách na refaktorovanie kódu, ale predtým si preberieme niekoľko rýchlych tipov…
Tipy:
- Musíte vykonať refaktoring kódu v malých krokoch. Vykonajte malé zmeny vo svojom programe, každá z malých zmien trochu vylepší váš kód a ponechá aplikáciu vo funkčnom stave.
- Po vykonaní malých zmien v procese refaktorovania spustite test TDD a CI. Bez vykonania týchto testov vytvárate riziko zavedenia chýb.
- Nevytvárajte žiadne nové funkcie alebo funkcie počas procesu refaktoringu. Pred pridaním akýchkoľvek aktualizácií alebo nových funkcií do existujúceho kódu by ste mali kód prefaktorovať.
- Proces refaktoringu môže ovplyvniť výsledky testovania, takže je dobré zapojiť do procesu refaktoringu váš tím kontroly kvality a testovací tím.
- Musíte akceptovať, že nebudete úplne spokojní so svojím kódom. Váš prerobený kód bude v blízkej budúcnosti zastaraný a budete ho musieť znova prefaktorovať.
Najbežnejšie techniky refaktorovania kódu
Existuje mnoho prístupov a techník na refaktorovanie kódu. Poďme diskutovať o niektorých populárnych…
1. Red-Green Refactoring
Červeno-zelená je najpopulárnejšia a najrozšírenejšia technika refaktorovania kódu v agilnom procese vývoja softvéru. Táto technika vychádza z testovacieho prístupu k návrhu a implementácii, čím sa kladie základ pre všetky formy refaktoringu. Vývojári prevezmú iniciatívu za refaktoring do testovacieho vývojového cyklu, ktorý prebieha v troch okresných krokoch.

- ČERVENÁ: Prvý krok začína napísaním neúspešného červeného testu. Zastavíte sa a skontrolujete, čo treba rozvinúť.
- Zelená: V druhom kroku napíšete dostatočne najjednoduchší kód a získajte, aby vývoj prešiel zeleným testovaním.
- Refaktor: V poslednom a treťom kroku sa zameriate na zlepšenie a vylepšenie kódu, aby bol váš test zelený.
Takže táto technika má v podstate dve odlišné časti: Prvá časť zahŕňa písanie kódu, ktorý do vášho systému pridá novú funkciu a druhá časť je celá o prerobení kódu, ktorý túto funkciu vykonáva. Majte na pamäti, že počas pracovného postupu by ste nemali robiť oboje naraz.
2. Refaktoring Abstrakciou
Túto techniku väčšinou používajú vývojári, keď je potrebné vykonať veľké množstvo refaktorov. Túto techniku používame hlavne na zníženie redundancie (duplikácie) v našom kóde. To zahŕňa dedičnosť tried, hierarchiu, vytváranie nových tried a rozhraní, extrakciu, nahradenie dedičnosti delegovaním a naopak.

Pull-Up/Push-Down metóda je najlepším príkladom tohto prístupu.
- Vyťahovacia metóda: Sťahuje časti kódu do nadtriedy a pomáha pri odstraňovaní duplikácie kódu.
- Metóda push-down: Zoberie časť kódu z nadtriedy a presunie ju dole do podtried.
Vytiahnite telo konštruktora, extrahujte podtriedu, extrahujte nadtriedu, zbaľte hierarchiu, metódu šablóny formulára, extrahujte rozhranie, nahraďte dedičstvo delegovaním, nahraďte delegovanie dedičstvom, posuňte pole dole, to všetko sú ďalšie príklady.
V podstate v tejto technike vytvárame abstrakciu pre tie časti systému, ktoré je potrebné refaktorovať, a náprotivok, ktorý ju nakoniec nahradí. Dva bežné príklady sú uvedené nižšie…
excelový rozdiel dátumov
- Zapuzdrené lúka: Kód prinútime k prístupu k poľu metódami getter a setter.
- Zovšeobecniť typ: Vytvárame všeobecnejšie typy, ktoré umožňujú zdieľanie kódu, nahrádzame kód kontroly typu stavom, nahrádzame podmienené polymorfizmom atď.
3. Spôsob skladania
Počas fázy vývoja aplikácie veľakrát píšeme dlhé metódy v našom programe. Vďaka týmto dlhým metódam je váš kód extrémne ťažko pochopiteľný a ťažko sa mení. V týchto prípadoch sa väčšinou používa metóda skladania.
V tomto prístupe používame efektívne metódy na zníženie duplicity v našom kóde. Niektoré príklady sú: metóda extrahovania, extrahovanie premennej, inline Temp, nahradenie Temp dotazom, inline metóda, rozdelenie dočasnej premennej, odstránenie priradení k parametrom atď.
Extrakcia: Rozdeľujeme kód na menšie časti, aby sme našli a extrahovali fragmentáciu. Potom vytvoríme samostatné metódy pre tieto časti a potom sa nahradí volaním tejto novej metódy. Extrakcia zahŕňa triedu, rozhranie a lokálne premenné.
V rade: Tento prístup odstraňuje množstvo nepotrebných metód v našom programe. Nájdeme všetky volania metód a potom ich všetky nahradíme obsahom metódy. Potom metódu vymažeme z nášho programu.
vstupný reťazec java
4. Zjednodušujúce metódy
V tomto prístupe sú zahrnuté dve techniky... poďme diskutovať o oboch.
- Zjednodušenie refaktoringu podmienených výrazov: Podmienený príkaz v programovaní sa časom stáva logickejším a komplikovanejším. Musíte zjednodušiť logiku vo svojom kóde, aby ste pochopili celý program.
Existuje toľko spôsobov, ako zmeniť kód a zjednodušiť logiku. Niektoré z nich sú: konsolidácia podmieneného výrazu a duplikovanie podmienených fragmentov, rozklad podmieneného, nahradenie podmieneného polymorfizmom, odstránenie kontrolného príznaku, nahradenie vnoreného podmieneného znaku ochrannými doložkami atď. - Refaktoring volaní zjednodušenej metódy: V tomto prístupe robíme volania metód jednoduchšie a zrozumiteľnejšie. Pracujeme na interakcii medzi triedami a zjednodušujeme im rozhrania.
Príklady sú: pridanie, odstránenie a zavedenie nových parametrov, nahradenie parametra explicitným volaním metódy a metódy, parametrizácia metódy, vytvorenie samostatného dotazu od modifikátora, zachovanie celého objektu, odstránenie metódy nastavenia atď.
5. Presúvanie prvkov medzi objektmi
V tejto technike vytvárame nové triedy a bezpečne presúvame funkčnosť medzi starými a novými triedami. Podrobnosti o implementácii skryjeme pred verejným prístupom.
Teraz je otázkou... kedy presunúť funkcie medzi triedami alebo ako zistiť, že je čas presunúť funkcie medzi triedami?
Keď zistíte, že trieda má toľko povinností a deje sa príliš veľa vecí alebo keď zistíte, že trieda je zbytočná a v aplikácii nič nerobí, môžete kód presunúť z tejto triedy do inej triedy a úplne ho vymazať.
Príklady sú: presunúť pole, extrahovať triedu, presunúť metódu, inline triedu, skryť delegáta, zaviesť cudziu metódu, odstrániť prostredníka, zaviesť lokálne rozšírenie atď.
6. Prípravný refaktoring
Tento prístup je najlepšie použiť, keď si všimnete potrebu refaktoringu pri pridávaní niektorých nových funkcií do aplikácie. Ide teda v podstate o súčasť aktualizácie softvéru so samostatným procesom refaktorovania. Ušetríte si budúci technický dlh, ak si všimnete, že kód je potrebné aktualizovať počas skorších fáz vývoja funkcií.
Koncový používateľ nevidí takéto úsilie inžinierskeho tímu z očí do očí, ale vývojári pracujúci na aplikácii nájdu hodnotu refaktorovania kódu pri vytváraní aplikácie. Môžu ušetriť čas, peniaze a ďalšie zdroje, ak strávia nejaký čas aktualizáciou kódu skôr.
Je to ako keby som chcel ísť 100 míľ na východ, ale namiesto toho, aby som sa tmolil lesom, pôjdem 20 míľ na sever na diaľnicu a potom pôjdem 100 míľ na východ trikrát vyššou rýchlosťou, akou by som mohol Išiel som tam rovno. Keď vás ľudia tlačia, aby ste tam išli rovno, niekedy musíte povedať: ‚Počkaj, musím sa pozrieť na mapu a nájsť najrýchlejšiu cestu.‘ Prípravný refaktoring to robí za mňa.
Jessica Kerr (Vývojár softvéru)

7. Refaktorovanie používateľského rozhrania
Môžete vykonávať jednoduché zmeny v používateľskom rozhraní a refaktorovať kód. Napríklad: zarovnajte vstupné pole, použite písmo, preformulujte aktívny hlas, uveďte formát, použite spoločnú veľkosť tlačidla a zvýšte kontrast farieb atď.
Záverečné slová
Proces refaktorovania kódu musíte považovať za vyčistenie usporiadaného domu. Zbytočný neporiadok v domácnosti môže vytvárať chaotické a stresujúce prostredie. To isté platí pre písaný kód. Čistý a dobre organizovaný kód sa vždy ľahko mení, je ľahko pochopiteľný a ľahko sa udržiava. Ak budete procesu refaktorovania kódu venovať pozornosť skôr, nebudete mať problémy.
Dvaja z najvplyvnejších vývojárov softvéru Martin Fowler a Kent Beck venovali svoj čas vysvetleniu procesu refaktorovania kódu a jeho techník. Napísali na túto tému aj kompletnú knihu Refaktoring: Zlepšenie dizajnu existujúceho kódu . Táto kniha popisuje rôzne techniky refaktorovania s jasným vysvetlením práce na tomto procese refaktorovania. Odporúčame vám prečítať si túto knihu, ak chcete ísť do hĺbky procesu refaktorovania kódu.