From Wikipedia, the free encyclopedia
Refaktorování je disciplinovaný proces provádění změn v softwarovém systému takovým způsobem, že nemají vliv na vnější chování kódu, ale vylepšují jeho vnitřní strukturu s minimálním rizikem vnášení chyb. Při refaktorování se provádí malé až primitivní změny, ale celkový efekt je velký, a to v podobě čistšího, průhlednějšího a čitelnějšího kódu, kód se také lépe udržuje a rozšiřuje. Zlepšuje se také celková kvalita kódu a architektura, snižuje se počet chyb a tím i zvyšuje rychlost vývoje programu. Refaktorování pomáhá pochopit a více si ujasnit kód, což je vhodné zejména upravování zdrojového kódu po někom jiném.
Refaktorování se začalo používat mezi programátory ve Smalltalku, což je čistě objektový programovací jazyk, kde existoval první na tuto činnost vhodný nástroj. Později, když již bylo refaktorování v povědomí některých programátorů a metody refaktorování jimi byly dostatečně prověřeny, napsal Martin Fowler za velké pomoci těchto zkušených programátorů knihu Refactoring: Improving the Design of Existing Code, která je dodnes využívána jako základní příručka k poznání a naučení se správného refaktorování. Refaktorování je dnes již neodmyslitelnou součástí moderního programování.
Při nedostatečné znalosti může být refaktorování velice riskantní, jelikož se upravuje funkční kód a touto úpravou mohou být do kódu zavedeny velice záludné chyby a program již nemusí být funkční. Proto mezi hlavní zásadu patří mít před samotným refaktorováním připravenou dobrou sadu testů, které se spustí po každé změně.
Další důležitá zásada je refaktorovat po malých krocích a to neustále a ihned testovat, zda někde nevznikla chyba. Většina programátorů provádí refaktorování, aniž by o něm věděla, jelikož jedna z nejdůležitějších zásad programátora je, aby ve svém kódu neměl duplicity. Když nějakou duplicitu objeví, snaží se jí zbavit, a to většinou nevědomky refaktorováním, a to konkrétně postupem vyjmout metodu.
Martin Fowler ve své knize Refaktorování uvádí 22 „pachů v kódu“, které jsou známkou toho, že by kód měl být refaktorován a zároveň uvádí, jaké techniky jsou pro ten který pach třeba. To ale neznamená, že to tak musí vždy být, vždy závisí na konkrétní situaci. Zde jsou nastíněny pouze některé pachy v kódu, ty nejzákladnější a většinou i nejčastější:
Další důvody proč a kdy začít s refaktorováním:
A v neposlední řadě je tu „kritérium tří“: refaktorovat místo třetího opakovaní – pravidlo Dona Robertse.
Při refaktorování nelze zapomenout na metaforu dvou klobouků od Kenta Becka: v jednom klobouku se přidává funkcionalita a nemění struktura, v druhém klobouku se mění struktura a nepřidává funkcionalita. Lze je měnit klidně každých 5 minut, ale vždy je třeba vědět, co je prováděno, tedy jaký klobouk je na hlavě a nemíchat přidávání funkcionality s refaktorováním.
Obecně refaktorování nemají rádi vedoucí projektů, protože může trvat velice dlouho, projekt zbrzdit a nepřinést na první pohled žádný viditelný výsledek. Pokud je vedoucí projektu proti refaktorování, je třeba vyzdvihnout především jeho pozitiva mimo jiné i to, že náklady na budoucí provoz se sníží, stejně tak jako doba potřebná k přidání nové funkčnosti a těmito argumenty se ho snažit přesvědčit.
Zde se uvádí výčet technik refaktorování, které jsou detailně popsané v knize Refaktorování.
Existuje vazba mezi refaktorováním a návrhovými vzory, a to taková, že vzory popisují definovaný cíl a naopak refaktorování popisuje způsob, jak se k tomuto cíli dostat.
Některé postupy při refaktorování je možné přesně definovat a zcela automatizovat a dnes je již v moderních vývojových prostředích nabízena podpora při refaktorování. Technika vyjmout metodu z dlouhé metody již tedy není složitá a prakticky u něj není ani potřeba více přemýšlet, udělá jej program. Někteří si při psaní kódu ani neuvědomují, že například změna názvu proměnné je také refaktorování, které provede program, avšak dříve tato změna byla velmi náročná.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.