Začínáme s refaktoringem kódu aneb co bys měl vědět | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Začínáme s refaktoringem kódu aneb co bys měl vědět

Začínáme s refaktoringem kódu aneb co bys měl vědět

Refaktoring 101: Cesta k čistému a efektivnímu kódu

Jednou z důležitých součástí práce programátora je refaktoring. Jde o poměrně složitou oblast v rámci tohoto neustále se rozvíjejícího oboru. Zahrnuje totiž úpravu nebo změnu stávajícího kódu, aniž by došlo k ovlivnění jeho funkce. Programátoři stále pracují na nových řešeních a funkcích, jak věci vylepšit, což často mívá neblahý vliv na celkový stav kódu.

V článku se podíváme na úlohu refaktoringu kódu. Blíže se seznámíš s pojmem, jednotlivými metodami, ale především si představíme ověřené postupy, které ti v začátcích rozhodně pomůžou.

Co je to refaktoring kódu?

Ačkoliv se refaktoring může jevit jako módní slovo, popisuje celkem složitý proces přepisování jednotlivých částí kódu. Cílem je vylepšit stávající kód za pomocí částečných úprav, a to jedné za druhou. Jednoduše řečeno, jde o provádění velkých změn po malých krocích, které vylepšují stávající řešení.

Cílem refaktoringu rozhodně není přepis celého kódu. Nikdy se totiž nezačíná od nuly. Tento proces se zpravidla provádí před finalizací softwaru nebo aplikace, kdy jsou již pevně daná pravidla. Refaktoring se pak dá využít i po delší době, kdy si datová základna prošla různými vylepšeními.

Proč se provádí refaktoring kódu?

Pomáhá ti zlepšit kód i program

Refaktoring ti pomůže zlepšit návrh softwaru, na kterém pracuješ. Vývoj aplikací a jiných softwarových řešení je náročný úkol. Když přidáš ty nebo někdo jiný nové funkce, mohou výrazným způsobem ovlivnit fungování softwaru. Celková struktura kódu pak není tak přehledná a čistá jako na počátku svého vzniku.

Umožní ti lépe porozumět kódu

Je všeobecně známo, že vývojáři čtou kód mnohem častěji, než ho píšou. V důsledku toho je ve tvém nejlepším zájmu udržovat věci co nejjednodušší. Mysli především na to, že lidé, kteří kód budou v budoucnu číst, ti budou nesmírně vděční. A pokud budeš refaktorovat správně, tak se to projeví i na tvých vývojářských dovednostech.

Refaktoring ti pomůže rozšířit tvé znalosti

V neposlední řadě ti refaktoring poslouží jako metoda aktivního učení. I když jsi kód nepsal, díky tomuto přepisovacímu procesu se naučíš lépe porozumět kódu kolegů a jeho fungování.

Jak refaktoring pomáhá tvému týmu

Zařazení procesu refaktoringu bývá pro tým v rámci vývoje mnohdy obtížné. To však neznamená, že jde o méně důležitou činnost. Provádět by se měl pravidelně, protože pokud kód přepíšeš správně, usnadníš členům týmu jeho pochopení i možnost provedení dalších úprav.

Prováděním refaktoringu dostaneš kód do lepšího stavu. Ať už upravíš cokoliv, je potřeba se vyhnout zásadnímu problému – často je třeba nerozlišovat mezi technickou hodnotou a vytvářenou funkcí (obchodní hodnotou). Toho dosáhneš tak, že se výhradně zaměříš na srozumitelnost kódu.

Jaké základy refaktoringu je třeba si osvojit?

Jedním ze základních problémů, které nezvládá většina týmů napříč moderními společnostmi, je určit si, kdy refaktorovat. Díky tomu si s sebou nesou špatný technický stav kódu, a to na úkor rychlosti, ale i jeho kvality.

Rozhodně se nedá říct, že jde o špatný přístup. Na druhou stranu je potřeba vytvářet strategie a správně řídit to, jak se s technickým stavem kódu v rámci vývoje potýkat. Pro tyto případy je důležité mít navržený propracovaný systém sledování, plánování, stanovení si priorit a řešení problémů vznikajících z důvodu špatného technického stavu kódu.

Jak by to tedy mělo vypadat?

  • Sleduj zásadní problémy, které se týkají kódu a případně jeho propojení s daným systémem.
  • Stanov si priority dopadu těchto problémů, protože všechny situace se dají rozlišit podle oblasti nebo kontextu.
  • Zaměř se na základnu kódu a dlouhodobě pečuj o její zdraví a vytvářej lepší a udržitelnější řešení.

Jak na refaktoring kódu?

Dnes můžeš narazit na celou řadu různých metod, jak na refaktoring kódu. Určitě je tu nezmíníme všechny, ale seznámíme tě alespoň s těmi nejoblíbenějšími, které bys měl*a rozhodně znát.

Metoda Red-Green-Refactor

Metoda Red-Green-Refactor se zpravidla využívá u technického refaktoringu, a to zejména při agilním vývoji. Spočívá v rozdělení kódu do tří samostatných kroků. Tato metoda je příkladem programování řízeného testy. To pomáhá programátorovi přesně určit, jaké kroky je potřeba udělat před a během vývoje.

Metoda Red-Green-Refactor zahrnuje tyto tři následující kroky:

1. Červená: Zvaž, co vyvíjíš, a napiš pro to test, který selže.

2. Zelená: Proveď testování: Napiš implementační kód tak, aby testem prošel.

3. Refaktor: Hledej způsoby, jak kód optimalizovat a vylepšit.

Refaktoring pomocí abstrakce

Refaktoring pomocí abstrakce pomáhá redukovat nadbytečný kód v jeho extrahováním z podtříd, snížením hierarchie atp. K tomu se používá metody Pull-Up a Push-Down. Ty rozdělí třídu na dvě, přičemž jedna je vázána na nadtřídu a druhá na podtřídu.

1. Metoda Pull-Up: Vytahování části kódu do nadtřídy, díky čemuž pomáhá při odstraňování duplicitního kódu.

2. Metoda Push-Down: Vezme část kódu z nadtřídy a přesune ji dolů do podtříd.

Tato technika v podstatě zahrnuje vytvoření abstrakční vrstvy pro části systému, které je třeba změnit a také se dá provádět postupně. Vývojářům umožňuje pravidelně uvolňovat systém.

Metoda compose

Během vývoje mají vývojáři tendenci psát obtížné struktury, které se velmi těžko mění. Metoda compose se používá v případech, kdy je kód extrémně obtížný na pochopení. V rámci refaktoringu pomáhá s tím, že odstraňuje duplicitní kód. Následně se pak dělí na:

  • Extraction, tedy rozkládání kódu na menší části, s nimiž se pak dá pracovat. Mohou být přesunuty pomocí jiné metody (které uvádíme výše a níže), nebo nahrazeny novým kódem.
  • Inline refaktoring je technika, jejímž cílem je snížit počet funkcí a zároveň zjednodušit kód a jeho objem. Jednotlivé části pak mohou být nahrazeny nadřízenými funkcemi.

Přesouvání prvků mezi objekty

Tato metoda se zaměřuje na vytváření nové třídy a bezpečné přesouvání funkcí mezi starými a novými třídami. V některých případech je nutné přesunout kód z jedné třídy do druhé, aby se uvolnilo místo.

Metoda extrakce

Metoda extrakce se snaží především o zlepšení celkové čitelnosti kódu tím, že řeší složitosti, poskytuje vysvětlení a reguluje strukturu. 

Samotný postup spočívá v přenesení části kódu z původní funkce do nově zavedené. Tato druhá sada je přehledně označena tak, aby popisovala funkce bloků kódu – způsobem, který vývojovým týmům usnadní poskládat celou strukturu zdrojového kódu.

Metoda zjednodušování

Zatímco extrakce se zaměřuje na zlepšování čitelnosti, metoda zjednodušování cílí především, jak už název napovídá, na jednoduchost kódu. Důležité je uvědomit si, čeho chceš dosáhnout. Potřebuješ zjednodušit logiku kódu, který se rozpadá, je příliš komplikovaný, nebo tě spíš zajímají parametry, jako je struktura třídy či jiné prvky?

Přípravný refaktoring

Přípravný refaktoring je velmi užitečný, pokud kód potřebuje refaktorizaci při implementaci nových funkcí. Vývojářům ušetří budoucí úpravu kódu. Obvykle se provádí při aktualizacích softwaru, a to k provedení potřebných změn, jakmile si vývojáři všimnou, že je to potřeba.

Osvědčené postupy pro refaktoring

Pochop kód

Než začneš s refaktorizací kódu, je důležité důkladně si projít zdrojový kód a ujistit se, že rozumíš jednotlivým komponentům aplikace. Udělej si sekvenční diagram, který ti pomůže pochopit jednotlivé kroky v kódu.

Stanov a definuj si cíle

Důležité také je stanovit si cíle a naplánovat konkrétní úkoly, které budou v souladu s aktuálním pracovním postupem. Nezapomeň, že je potřeba si vše přesně definovat a jednotlivé úkoly by neměly být závislé na jiných. Díky tomu se vyhneš případným zpožděním.

Urči si časový rámec

Jednou z nejnáročnějších částí refaktoringu kódu je stanovení si deadlinu jeho dokončení. Na základě toho bys měl*a určit přesné kroky, které ti umožní vše dokončit v rozumném časovém rámci.

Ačkoli je čištění kódu časově velmi náročné, je také výhodné refaktorovat, jakmile jsi přesvědčen*a, že kód lze zefektivnit a potřebuje údržbu. Tímto postupem se v budoucnu s týmem vyhneš špatnému stavu kódu.

Vždy testuj

Třebaže refaktorizace kódu nemění funkčnost programu, vyžaduje si testování, aby se zjistilo, zda nový kód nevytváří nové chyby. Fáze testování jsou během procesu refaktorizace kódu klíčové. Jejich provádění pomáhá vyhnout se nežádoucím změnám v kódu, které by ovlivnily funkčnost softwaru.

Zkus použít nástroje navržené pro refaktoring

Je také nezbytné používat nástroje, které mohou pomoci urychlit proces refaktorizace kódu a minimalizovat pravděpodobnost problémů, které mohou být přehlédnuty. Moderní nástroje také pomáhají zajistit, aby byl kód konzistentní a přesný. Využít tak můžeš hned několik zajímavých řešení:

  • Visual studio intellicode
  • IDE Eclipse
  • Sada nástrojů Spring Tool Suite 4
  • Rider
  • IntelliJ IDEA

Co si odnést z refaktoringu?

Refaktoring je proces, který zahrnuje revizi zdrojového kódu. Nezavádí nové funkce ani změny v základním systému. Je to disciplína, která pomáhá udržovat plynulý chod kódu bez zavádění nových chyb. Další výhodou refaktoringu je, že umožňuje vývojářům soustředit se na detaily, jenž budou vhodné pro implementaci nových řešení, a ne pouze samotného kódu.

Pomocí správných metod refaktoringu se lze zbavit zastaralých softwarových aplikací a zlepšit jejich celkovou funkčnost, aniž by došlo ke zhoršení jejich současného stavu. Věnuj proto pozornost této oblasti, protože ti pomůže také z hlediska clean codu.

Autor: Martin Šlat

Více článků
Příručka od robot_dreams s příkladem syntaxe
Kam se dnes posouvají technologické hranice robotiky?