úterý 30. září 2008

Nemám rád mrtvý kód

Za posledních čtrnáct dní jsem přečetl tolik kódu, že mi to vystačí minimálně na další dva příspěvky ;-). Jestli mě v kódu něco dráždí jako červený hadr býka, pak je to mrtvý kód. Nejdříve malá definice, co je podle mého mrtvý kód. Mrtvý kód - představuje nevyužité proměnné, importy, metody a zakomentované části kódu a nebo větve kam se program prostě nedostane.

Někdo by si řekl, že mrtvý kód přece ničemu překážet, ale opak je pravdou. Mrtvý kód má následující stinné dopady:

  • Zhoršuje čitelnost a v konečném důsledku udržovatelnost kódu. Metoda s poměrem 2:1 mrtvého vůči živému kódu se opravdu nečte dobře a úplně dobře se v takovém textu ani nevyhledává. To už ani nemluvím o kódu, do kterého se program nemůže dostat, protože podmínky pro jeho splnění již dávno neplatí např. zastaralý přepínač nebo změna rozsahu vstupní hodnoty.
  • Působí zmatečně. Kolikrát se mi stalo, že jsem chtěl opravit nějaký defekt a najednou koukám, že část zakomentovaného kódu dělá něco podobného. Je to tám schválně? Co mi tím chtěl autor říci, nemám si dát pozor na něco? Dalším příkladem jsou nepoužité proměnné, argumenty metod a konstruktorů. Smetí, které zhoršuje čitelnost se dá najít celá řada.

Moje zkušenost je taková, že čím větší poměr mrtvého kódu na metodu/třídy připadá, tím větší žumpa to bude. Taková třída/metoda se minimálně pětkrát přepsala, vyřádila se na ní minimálně půlka firmy a kód podle toho vypadá. Někdy je zakomentovaný kód signálem toho, že došlo k rychlému fixu, autor prostě nevěděl co s tím nebo neměl čas to udělat pořádně, tak danou část kódu přeimplementovatl a tu zakomentovanou nechal pro strýčka příhodu.

K mrtvému kódu resp. zakomentovanému se dokonce váže jedna veselá historka. Jeden programátor údajně argumentoval tak, že zakomentovaný kód tam nechává proto, aby bylo vidět, jak bylo před tím. To mělo jistě svojí logiku, ale pouze za předpokladu, že bychom si zdrojáky stále předávali na disketě a version control systémy jako CVS a SVN by byly v plenkách.

Moje rada, nenechávejte po sobě mrtvý kód. Refaktorujte, refaktorujte a refaktorujte. Vše co není potřeba nechť zmízí. Případnou historii lze stejně najít ve verzovacím systému a ruku na srdce, kolikrát jste z mrtvého kódu udělali zase ten živý.