pondělí 27. června 2011

Zbavte se nemrtvého kódu

Všichni to známe. Kód, který se dlouho vyhříval na výsluní programátorovy přízně se stal jednoho dne nechtěným. Byl nahrazen pěknější a odladěnější implementací. Programátorovi však bylo líto přímo odstranit výsledek svého dřívějšího snažení a proto kód pouze zakomentoval. Co kdyby se někdy v budoucnu konalo zmrtvýchvstání některé části kódu? Tím však pouze oddálil jeho nezvratný osud a připustil, aby se mrtvý kód zjevoval jako přízrak stojící v temných zákoutích definicí tříd a strašil náhodné zvědavce prohlížející tyto třídy.

Mrtvý (nebo spíš nemrtvý) kód bývá součástí každého projektu. I u nás se objevil a to ve větším než malém množství. V okamžiku, kdy jsme zaktivovali statickou analýzu kódu, nám začaly nabíhat varování o nesprávně zakomentovaném kódu. Byl to pro nás impuls, abychom se nad přítomností takového kódu zamysleli. A výsledný verdikt je jednoznačný - přítomnost nemrtvého kódu je v produkční vývojové větvi nepřípustná.

Důvody, proč je nemrtvý kód škodlivý:

  • Snižuje čitelnost kódu. Ať už se jedná o zakomentovaný samostatný řádek nebo o celou metodu třídy, vždy narušuje čistotu kódu a ztěžuje Vám orientaci v kódu. Známá poučka říká, že poměr času strávený čtením a orientací v kódu a vlastního psaní kódu je 5 : 1. Proto každý nadbytečný řádek kódu je škodlivý.
  • Zvyšuje míru nejistoty. Po nějaké době i autor zakomentování kódu ztrácí přehled o důvodech, proč kód zakomentoval a především proč jej přímo neodstranil. Není si jistý, zda-li neplánoval znovupoužití kódu a proto nenachází odvahu se takovéhoto kódu zbavit. Nemrtvý kód začne v projektu po čase zapáchat a není to nic příjemného ani pro ostatní členy týmu, kteří do Vaší třídy zavítají.
  • Komplikuje prohledávání kódu. Hledaný výraz se objeví i ve výsledcích vyhledávání, které jsou v nemrtvém kódu. To je minimálně otravné.
  • Komplikuje slučování změn ve vývojových větvích a umisťování změn na server. Nemrtvý kód může být zdrojem dalších konfliktů, které budete muset zbytečně řešit.

Abyste mohli beze strachu odstraňovat nepotřebný kód, měli byste používat verzovací systém. Může se stát, že si odmažete část implementace, ke které se potřebujete vrátit. Právě v těchto okamžicích Vám začne být Váš verzovací systém ještě sympatičtější. Prostě o žádný kód napsaný dříve a umístěný na server nepříjdete. Pokud však nepříjdete přímo o celý server.

Pokud byste přesto chtěli tyto kódové zombíky pěstovat a potřebovali byste poradit klávesovou zkratku pro rychlé zakomentování, můžete se podívat na příspěvek jednoho nebohého kodéra. Začíná svůj text slovy "Kód neodstraňuji, nikdy nevíte, kdy bude znovu potřeba" ... a následně to v komentářích pěkně schytal ... ;-)