Refaktorování: Porovnání verzí
Smazaný obsah Přidaný obsah
pracuje se |
základní úpravy, vrácení iw a kategorie |
||
Řádek 1:
{{Pracuje se}}
== '''Refaktoring obecně''' ==▼
'''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 refaktoringu provádíme malé až primitivní změny, ale celkový efekt je velký a to v podobě čistšího, průhlednější a čitelnější 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 rychlost vývoje programu. Refaktoring nám pomáhá pochopit a více si ujasnit kód, což je vhodné zejména, pokud upravujeme kód po někom jiném.
== '''Vznik''' ==▼
Refaktoring se začal používat mezi programátory ve smalltalku, což je čistě objektový programovací jazyk, kde existoval první nástroj na refaktoring, později, když již refaktoring byl 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í, což je dnes neodmyslitelná metoda moderního programování a tím se mohl refaktoring rozšířit do povědomí všech programátorů.
▲== '''Jak správně refaktorovat''' ==
Pokud refaktoring zcela neovládáme, může být velice riskantní, jelikož upravujeme funkční kód a touto úpravou si do kódu můžeme zavést 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ů, kterou spustíme po každé změně.
<br>Další důležitá zásada je refaktorovat po malých krocích a to neustále a ihned testovat, zda nám někde nevznikla chyba. Většina programátorů provádí refaktoring, 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 refaktoringem a to konkrétně postupem vyjmout metodu. ▼
▲
== '''Kdy refaktorovat''' ==▼
Martin Fowler ve své knize Refaktoring uvádí 22 takzvaných pachů v kódu, které jsou zvěstí toho, že bychom kód měli začít refaktorovat a zároveň uvádí, jaké techniky jsou pro který pach třeba. To ale neznamená, že to tak vždy musí být, samozdřejmě vždy závisí na konkrétní situaci. Já zde nastíním pouze některé pachy v kódu, ty nejzákladnější a většinou i nejčastější, ale pokud se o nich chcete dozvědět více, vřele doporučuji knihu Refaktoring.
*
*
*
*
*
*
Další důvody, kdy začít s refaktoringem: pokud máme v programu složité struktury podmínek, měli bychom refaktorovat, stejně tak jako bychom měli refaktorovat vždy před přidáním nějaké nové funkcionality. Pokud nemůžeme najít chybu v kódu, je to další důvod, proč bychom měli refaktorovat. A v neposlední řadě je tu zásada tří - refaktorovat místo třetího opakovaní - pravidlo Dona Robertsa.
▲== '''Zásady refaktoringu''' ==
Při refaktorování nikdy nesmíme zapomenout na metaforu dvou klobouků od Kenta Becka: v jednom klobouku přidáváme funkcionalitu a neměníme strukturu, v druhém klobouku měníme strukturu a nepřidáváme funkcionalitu. Můžeme je měnit klidně každých 5 minut, ale vždy musíme vědět, co děláme, tedy jaký klobouk máme na hlavě a nemíchat přidávání funkcionality s refaktoringem.
Obecně refaktoring 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 i váš vedoucí projektu proti refaktoringu, 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. Myslím ale, že v dnešní době, kdy refaktoring je již hodně populární a především známý s ním nebude u vedoucích projektů problém.
▲== '''Techniky refaktoringu''' ==
Zde uvádím výčet technik refaktoringu, které jsou detailně popsané v knize Refaktoring.
*nahradit algoritmus
*nahradit dočasnou proměnnou dotazem
Řádek 53 ⟶ 41:
*vyjmout metodu – z dlouhé metody vyjmeme část kódu, který dáme do nové metody
*zavést vysvětlující proměnnou
*odstranit prostředníka
*přesunout metodu a přesunout položku – přesun do vhodné třídy
Řádek 62 ⟶ 51:
*zavést místní rozšíření
*nahradit datovou položku objektem
*nahradit pole objektem
Řádek 71 ⟶ 60:
*zavést předpoklad
*nahradit dědičnost delegováním
*nahradit delegování dědičností
Řádek 82 ⟶ 71:
*vytvořit šablonovou metodu
*zrušit hierarchii
'''Zjednodušení volání metod'''
*nahradit chybový kód výjimkou
Řádek 99 ⟶ 89:
*zavést objekt pro parametry
*roztrhnout dědičnost
*převést procedurální návrh do objektů
Řádek 105 ⟶ 95:
*oddělit datový model od prezentace
*duplikovat sledovaná data
*nahradit kód typu podtřídami
Řádek 118 ⟶ 108:
==
Existuje zde vazba mezi refaktoringem a návrhovými vzory a to taková, že vzory vlastně popisují definovaný cíl a naopak refaktorování popisuje způsob jak se k tomuto cíli dostat. Pokud se podíváte na jednotlivé techniky, poznáte již z jejich jména, že mají co dočinění s návrhovými vzory, viz vytvořit šablonovou metodu, zavést objekt null, nahradit konstruktor tovární metodou nebo nahradit kód typu stavem nebo strategií.
==
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 jako je Eclipse a další nabízena podpora při refaktoringu. Technika vyjmout metodu z dlouhé metody již tedy není vůbec složitý a prakticky u něj nemusíte ani moc přemýšlet, udělá jej za vás program. Někteří si při psaná kódu ani neuvědomují, že např. změna názvu proměnné je také refaktoring, který za nás provede program, avšak dříve tato změna byla velmi náročná.
== Externí odkazy ==
[[Kategorie:Programování]]
[[ca:Refacció]]
[[da:Refactoring]]
▲<br>[http://refactoring.com/] - Stránka Martina Fowlera o refaktoringu v angličtině
[[de:Refactoring]]
▲<br>Refaktoring: zlepšení existujícího kódu - Martin Fowler, nakladatelství Grada, rok vydání 2003, ISBN: 80-247-0299-1
[[en:Code refactoring]]
[[es:Refactorización]]
[[fi:Refaktorointi]]
[[fr:Refactorisation]]
[[gl:Refactorización]]
[[it:Refactoring]]
[[ja:リファクタリング (プログラミング)]]
[[ko:리팩토링]]
[[lt:Pertvarkymas (programavimas)]]
[[nl:Refactoren]]
[[pl:Refaktoryzacja]]
[[pt:Refatoração]]
[[ru:Рефакторинг]]
[[sv:Omstrukturering av kod]]
[[uk:Рефакторинг]]
[[vi:Cải tiến mã nguồn]]
[[zh:代码重构]]
|