Být vývojářem, jak začít pracovat na novém projektu…??
Nejprve shromáždíte některé základní požadavky a poté na základě požadavku začnete funkci jednu po druhé implementovat. Jak postupujete ve svém projektu a dozvíte se o něm více, neustále přidáváte a měníte kód ve své kódové základně. Později také změníte kód, abyste opravili případy chyb a okrajů.

Ale co se stane po pár dnech nebo měsících…? Jak vypadá váš kód...?? je to složité? Je těžké to pochopit? Pokud ano, pak jste rozhodně nevěnovali pozornost vylepšení kódu nebo restrukturalizaci kódu. Možná jste napsali nějaký duplicitní kód, aniž byste se podívali na existující kód, nebo jste napsali nějaké delší metody/funkce, velké třídy, příliš mnoho parametrů, neintuitivní názvy proměnných, umístění kódu atd.
Vylepšení nebo aktualizace kódu bez změny funkčnosti softwaru nebo externího chování aplikace se nazývá refaktoring kódu. Snižuje technické náklady a činí kód efektivnější a udržitelnější. Pokud nebudete věnovat pozornost procesu refaktorování kódu dříve, zaplatíte za chyby v kódu později. Neignorujte tedy vyčištění kódu.
V procesu vývoje softwaru mají různí vývojáři různé styly psaní kódu. Provádějí změny, udržují kód, rozšiřují kód a většinou kód opouštějí bez průběžného refaktorování. Nerefaktorovaný kód má tendenci hniloba kódu: mnoho zmatků a nepořádku v kódu, jako je duplicitní kód, nezdravé závislosti mezi třídami nebo balíčky, špatné rozdělení odpovědností za třídy, příliš mnoho odpovědností na metodu nebo třídu atd. Aby se předešlo všem těmto problémům, je důležité neustálé refaktorování.
Teď je otázka… jaké jsou techniky refaktorování kódu?
Budeme diskutovat o některých populárních a běžných technikách refaktorování kódu, ale předtím si proberme několik rychlých tipů…
Tipy:
- Musíte provést refaktoring kódu v malých krocích. Proveďte drobné změny ve svém programu, každá z malých změn trochu vylepší váš kód a ponechá aplikaci ve funkčním stavu.
- Po provedení malých změn v procesu refaktoringu spusťte testovací TDD a CI. Bez provedení těchto testů vytváříte riziko zavádění chyb.
- Během procesu refaktoringu nevytvářejte žádné nové funkce nebo funkce. Před přidáním aktualizací nebo nových funkcí do stávajícího kódu byste měli kód přefaktorovat.
- Proces refaktoringu může ovlivnit výsledky testování, takže je dobré zapojit do procesu refaktoringu tým kontroly kvality a testovací tým.
- Musíte se smířit s tím, že se svým kódem nebudete plně spokojeni. Váš refaktorovaný kód bude v blízké budoucnosti zastaralý a budete ho muset znovu refaktorovat.
Nejběžnější techniky refaktoringu kódu
Existuje mnoho přístupů a technik pro refaktorování kódu. Pojďme diskutovat o některých populárních…
1. Red-Green Refactoring
Red-Green je nejoblíbenější a nejrozšířenější technika refaktorování kódu v procesu vývoje agilního softwaru. Tato technika se řídí přístupem k návrhu a implementaci typu test-first, což pokládá základ pro všechny formy refaktoringu. Vývojáři převezmou iniciativu pro refaktoring do testovacího vývojového cyklu a provede se do tří okresních kroků.

- ČERVENÉ: První krok začíná napsáním neúspěšného červeného testu. Zastavíte se a zkontrolujete, co je třeba rozvíjet.
- Zelená: Ve druhém kroku napíšete dostatečně nejjednodušší kód a získáte zelený test pro vývoj.
- Refaktor: V posledním a třetím kroku se zaměříte na vylepšení a vylepšení kódu, aby byl váš test zelený.
Tato technika má tedy v zásadě dvě odlišné části: První část zahrnuje psaní kódu, který do vašeho systému přidá novou funkci, a druhá část je celá o refaktorování kódu, který tuto funkci provádí. Mějte na paměti, že během pracovního postupu byste neměli dělat obojí současně.
2. Refaktoring Abstrakce
Tuto techniku většinou používají vývojáři, když je potřeba provést velké množství refaktorů. Tuto techniku používáme především ke snížení redundance (duplikace) v našem kódu. To zahrnuje dědičnost tříd, hierarchii, vytváření nových tříd a rozhraní, extrakci, nahrazení dědičnosti delegováním a naopak.

Pull-Up/Push-Down metoda je nejlepším příkladem tohoto přístupu.
- Vytahovací metoda: Stahuje části kódu do nadtřídy a pomáhá eliminovat duplicitu kódu.
- Metoda push-down: Vezme část kódu z nadtřídy a přesune ji dolů do podtříd.
Vytáhněte tělo konstruktoru, extrahujte podtřídu, extrahujte nadtřídu, sbalte hierarchii, metodu šablony formuláře, extrahujte rozhraní, nahraďte dědičnost delegováním, nahraďte delegování dědičností, posunete pole dolů, to vše jsou další příklady.
V podstatě v této technice vytváříme abstrakční vrstvu pro ty části systému, které je třeba refaktorovat, a protějšek, který ji nakonec nahradí. Níže jsou uvedeny dva běžné příklady…
java je stejná
- Zapouzdřené pole: Kód přimějeme k přístupu k poli metodami getter a setter.
- Zobecnit typ: Vytváříme obecnější typy, které umožňují sdílení kódu, nahrazujeme kód kontroly typu stavem, nahrazujeme podmíněné polymorfismem atd.
3. Metoda skládání
Během vývojové fáze aplikace často píšeme dlouhé metody v našem programu. Tyto dlouhé metody činí váš kód extrémně těžko pochopitelným a obtížně měnitelným. Většinou se v těchto případech používá metoda skládání.
V tomto přístupu používáme zjednodušené metody ke snížení duplicit v našem kódu. Některé příklady jsou: metoda extraktu, extrahování proměnné, inline Temp, nahrazení Temp dotazem, inline metoda, rozdělení dočasné proměnné, odstranění přiřazení k parametrům atd.
Extrakce: Rozdělíme kód na menší části, abychom našli a extrahovali fragmentaci. Poté vytvoříme samostatné metody pro tyto bloky a poté je nahrazeno voláním této nové metody. Extrakce zahrnuje třídy, rozhraní a místní proměnné.
V souladu: Tento přístup odstraňuje množství zbytečných metod v našem programu. Najdeme všechna volání metod a poté je všechna nahradíme obsahem metody. Poté metodu z našeho programu odstraníme.
datumový řetězec java
4. Zjednodušující metody
Tento přístup zahrnuje dvě techniky… pojďme si je probrat obě.
- Zjednodušení refaktoringu podmíněných výrazů: Podmíněný příkaz v programování se postupem času stává logičtějším a komplikovanějším. Musíte zjednodušit logiku v kódu, abyste pochopili celý program.
Existuje tolik způsobů, jak předělat kód a zjednodušit logiku. Některé z nich jsou: konsolidovat podmíněný výraz a duplikovat podmíněné fragmenty, rozložit podmíněné, nahradit podmíněné polymorfismem, odstranit kontrolní příznak, nahradit vnořené podmíněné ochranné klauzule atd. - Refaktoring volání zjednodušené metody: V tomto přístupu je volání metod jednodušší a srozumitelnější. Pracujeme na interakci mezi třídami a zjednodušujeme jim rozhraní.
Příklady jsou: přidání, odstranění a zavedení nových parametrů, nahrazení parametru explicitním voláním metody a metody, metoda parametrizace, vytvoření samostatného dotazu od modifikátoru, zachování celého objektu, odstranění metody nastavení atd.
5. Přesouvání prvků mezi objekty
V této technice vytváříme nové třídy a bezpečně přesouváme funkčnost mezi starými a novými třídami. Podrobnosti implementace skrýváme před veřejným přístupem.
Nyní je otázkou… kdy přesunout funkcionalitu mezi třídami nebo jak zjistit, že je čas přesunout funkce mezi třídami?
Když zjistíte, že třída má tolik povinností a děje se příliš mnoho věcí nebo když zjistíte, že třída je zbytečná a v aplikaci nic nedělá, můžete přesunout kód z této třídy do jiné třídy a úplně jej smazat.
Příklady jsou: přesunutí pole, extrahování třídy, přesunutí metody, inline třídy, skrytí delegáta, zavedení cizí metody, odstranění prostředníka, zavedení místního rozšíření atd.
6. Přípravný Refaktoring
Tento přístup je nejlepší použít, když si všimnete potřeby refaktoringu při přidávání některých nových funkcí do aplikace. V podstatě je to součást aktualizace softwaru se samostatným procesem refaktoringu. Ušetříte si budoucí technický dluh, pokud si všimnete, že kód je třeba aktualizovat během dřívějších fází vývoje funkcí.
Koncový uživatel nevidí takové úsilí inženýrského týmu z očí do očí, ale vývojáři pracující na aplikaci najdou hodnotu refaktoringu kódu při sestavování aplikace. Mohou ušetřit čas, peníze a další zdroje, pokud stráví nějaký čas dřívější aktualizací kódu.
Je to jako bych chtěl jet 100 mil na východ, ale místo toho, abych se plahočil lesem, pojedu 20 mil na sever k dálnici a pak pojedu 100 mil na východ třikrát rychleji, než bych mohl Šel jsem tam přímo. Když vás lidé tlačí, abyste tam šli rovnou, někdy musíte říct: ‚Počkej, musím se podívat na mapu a najít nejrychlejší cestu.‘ To za mě udělá přípravný refaktoring.
Jessica Kerr (vývojář softwaru)

7. Refaktoring uživatelského rozhraní
Můžete provádět jednoduché změny v uživatelském rozhraní a refaktorovat kód. Například: zarovnejte vstupní pole, použijte písmo, přeformulujte aktivní hlas, označte formát, použijte běžnou velikost tlačítka a zvyšte kontrast barev atd.
Závěrečná slova
Proces refaktorování kódu musíte považovat za úklid spořádaného domu. Zbytečný nepořádek v domácnosti může vytvořit chaotické a stresující prostředí. Totéž platí pro psaný kód. Čistý a dobře organizovaný kód se vždy snadno mění, je snadno pochopitelný a snadno se udržuje. Pokud budete věnovat pozornost procesu refaktoringu kódu dříve, nebudete mít později potíže.
Dva z nejvlivnějších softwarových vývojářů Martin Fowler a Kent Beck věnovali svůj čas vysvětlení procesu refaktorování kódu a jeho technik. Na toto téma také napsali kompletní knihu Refaktoring: Zlepšení návrhu stávajícího kódu . Tato kniha popisuje různé techniky refaktorování s jasným vysvětlením práce na tomto procesu refaktorování. Pokud chcete jít do hloubky procesu refaktorování kódu, doporučujeme vám přečíst si tuto knihu.