Pachy v kódu
![ikona](http://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Merge-arrows.svg/48px-Merge-arrows.svg.png)
Je navrženo začlenění celého obsahu tohoto článku do článku Refaktorování.
Odsud tam pak má vést přesměrování. K návrhu se můžete vyjádřit v diskusi.
![ikona](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Broom_icon.svg/48px-Broom_icon.svg.png)
Tento článek potřebuje úpravy.
Můžete Wikipedii pomoci tím, že ho vylepšíte. Jak by měly články vypadat, popisují stránky Vzhled a styl, Encyklopedický styl a Odkazy.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Preferences-system.svg/16px-Preferences-system.svg.png)
Konkrétní problémy: encyklopedický styl, nedefinované pojmy (třída apod.) bez linku
Za „pachy“ v kódu lze považovat jakýkoliv symptom v kódu, který ukazuje na hlubší problém. Tento problém často nelze vidět hned, ale může být odkryt, pokud je kód podroben důkladné analýze.
Nejčastější „pachy“ v kódu
- Duplicitní kód Figuruje v přehlídce „pachu“ na prvním místě. Je to identický či velice podobný kód, který existuje na více místech. Tento kód je špatně udržitelný a náchylný k chybám.
- Příkazy switch Potíž s tímto příkazem je většinou v jeho duplicitě. Často v kódu lze nalézt stejné příkazy switch na mnoha místech v programu. Když chceme přidat novou větev, musíme najít a změnit všechny výskyty příkazu.
- Dlouhé metody Budí podezření, zdali vykonávají opravu jednu konkrétní funkcionalitu odpovídající jejích názvu. Kratší metody jsou vždy čitelnější, srozumitelnější a jednodušší.
- Velká třída Pokud třída dělá příliš mnoho, obvykle se to projevuje velkým množstvím instančních proměnných. Tyto třídy jsou kandidáty pro duplicity, chaos a zmar. Jsou jako dlouhé metody hůře čitelné a srozumitelné.
- Rozptýlené úpravy Pocítíte je, pokud při každé změně musíte provést řádu drobných úprav v mnoha třídách. Místa, která je potřeba upravit, je těžké najít. Rozptýlené úpravy nastávají při jedné změně, která ovlivní řadu tříd.
- Dlouhý seznam parametrů Metody s dlouhým počtem parametrů jsou většinou nesrozumitelné. Pokud předávané parametry obsahuje nějaký objekt, je řešením předat jako parametr tento objekt.
- Chybějící schopnosti Popisují problém, kdy existují metody, které se více zajímají o jiné třídy, než o třídy, v nichž jsou vytvořené. Abychom se vyhnuli chybějícím schopnostem tak základním pravidlem je sdružovat věci, které se spolu mění.
- Datové shluky V návrhu programu se často můžeme setkat s daty, která patří k sobě. Tato data jsou mnohdy různě rozmístěna. Skupiny dat, které se drží pohromadě si zaslouží vlastní objekt.
- Líná třída Je třída, která nedělá dost, aby se vyplatila, by měla být proto odstraněna či sloučena.
- Komentáře Často v kódu lze narazit na pečlivě komentovaný kód, kde komentáře jsou jen proto, že kód je špatný a signalizuji kód, který má hnilobná ložiska. Komentář je vhodné použit pokud nevíme kudy dál. Je dobrý k vysvětlení, proč je něco uděláno určitým způsobem.
Refaktorování neboli jak na „pachy“ v kódu
Podrobnější informace naleznete v článku Refaktorování.
Refaktorování je disciplinovaný proces provádění změn v kódu takovým způsobem, že nemá vliv na vnější chování kódu, zato však vylepšuje jeho vnitřní strukturu a pomáhá umenšit riziko dosavadních chyb, i za cenu rizika vnášení nových chyb, které je však menší než dosavadní riziko. Refaktorování mění programy po malých krocích. Pokud se spletete, je cílem, aby bylo jednoduché chybu najít. Alfou a Omegou úspěšného refaktorování je sada automatizovaných testů.
- Proč refaktorovat?
- Těžko se upravují programy, které se těžko čtou.
- Těžko se upravuji programy s duplicitní logikou.
- Těžko lze upravit programy, které po přidaní funkcionality vyžadují změnu funkčního kódu
- Těžko lze upravovat kód se složitými strukturami podmínek.
- Přínosy refaktorování
- Zlepšuje návrh software
- Vede k lepši srozumitelnosti softwaru
- Pomáhá hledat chyby
- Umožňuje významně zrychlit programování
Literatura
- Refaktoring: zlepšení existujícího kódu - Martin Fowler, nakladatelství Grada, rok vydání 2003, ISBN 80-247-0299-1
Externí odkazy
- (anglicky) Stránka Martina Fowlera o refaktoringu