Uživatelské nástroje

Nástroje pro tento web


it:sw:refactoring

Refaktoring kódu

Refaktoring je systematický proces vylepšování designu kódu bez přidávání nových funkcí. Cílem je učinit kód čistším (Clean Code), čitelnějším a snadněji udržitelným. Jak řekl Martin Fowler: „Jakýkoli blbec může napsat kód, kterému rozumí počítač. Dobří programátoři píší kód, kterému rozumí lidé.“

1. Kdy je refaktoring potřeba? (Code Smells)

Příznaky, že kód vyžaduje refaktoring, se v komunitě označují jako „Code Smells“ (zápachy kódu). Mezi nejčastější patří:

  • Duplicitní kód: Stejná logika se vyskytuje na více místech (porušení principu DRY – Don't Repeat Yourself).
  • Příliš dlouhá metoda: Metoda dělá příliš mnoho věcí najednou (porušení SRP).
  • Velká třída: Třída, která se snaží být „Božským objektem“ (God Object) a spravuje příliš mnoho agendy.
  • Příliš mnoho parametrů: Metoda vyžaduje dlouhý seznam argumentů, což ztěžuje její použití a testování.

2. Základní techniky refaktoringu

Existují desítky popsaných technik, zde jsou ty nejpoužívanější:

Extract Method (Extrakce metody)

Část kódu z dlouhé metody se vyjme a vytvoří se z ní nová, samostatná metoda s výstižným názvem.

  • Výhoda: Zvyšuje čitelnost a umožňuje znovupoužití logiky.

Rename Variable/Method (Přejmenování)

Změna názvu proměnné nebo metody tak, aby jasně vyjadřovala svůj účel.

  • Příklad: Změna `int d;` na `int daysSinceCreation;`.

Inline Method (Vložení metody)

Opak extrakce. Pokud je tělo metody stejně jasné jako její název, metoda se zruší a kód se vloží přímo tam, kde se volala.

Move Method (Přesun metody)

Pokud metoda více komunikuje s jinou třídou než s tou, ve které se nachází, přesune se do té druhé.

3. Zlaté pravidlo: Testování

Refaktoring by se nikdy neměl provádět bez sady automatizovaných testů (Unit testů).

1. Máte funkční kód s testy, které procházejí (Green).
2. Provedete malou úpravu (Refaktoring).
3. Spustíte testy. Pokud stále procházejí, vnější chování zůstalo zachováno.
4. Pokud testy selžou, vrátíte změnu zpět.

4. Přínosy refaktoringu

  • Snížení technického dluhu: Kód se nestává „neudržitelným monstrem“.
  • Snazší hledání chyb: V přehledném kódu se chyby schovávají mnohem hůře.
  • Rychlejší vývoj v budoucnu: Čistá architektura umožňuje rychlejší přidávání nových funkcí.
  • Lepší porozumění: Programátor při refaktoringu do hloubky pochopí, jak kód funguje.

5. Refaktoring vs. Optimalizace

Je důležité tyto pojmy nezaměňovat:

  • Refaktoring: Cílem je čitelnost a design. Může se stát, že kód bude po refaktoringu o milisekundu pomalejší, ale mnohem čistší.
  • Optimalizace: Cílem je výkon (rychlost, využití paměti). Často může kód znepřehlednit v zájmu efektivity.

Související články:

Tagy: programming software-engineering refactoring clean-code maintenance

it/sw/refactoring.txt · Poslední úprava: autor: admin