Mind the age! Most likely, its content is outdated. Especially if it’s technical.
Hodně vídám v kódu komentáře. To by nebylo to nejhorší, jsou situace, kdy jsou
komentáře opravdu důležité, ale většinou narážím na situace, kdy je tomu
opačně. Takové komentáře mám čím dál více nerad.
Přitom by stačilo málo – než se napíše komentář, stačilo by se zamyslet, zda
je opravdu důležitý. Jako nejběžnější zbytečné komentáře jsou totiž takové
komentáře, které popisují to, co už popisuje sám kód.
Pokud však kód nemluví sám za sebe (a zdá se, že je komentář nutný), pak je
pravděpodobně samotný kód napsán špatně. Stačí se podívat zda nepomůže lepší
pojmenování nebo rozdělení funkcionality na menší dílky atp. Prostě
refaktorovat.
Ve výsledku by měl být komentář nutný opravdu jen ve výjimečných
situacích.
Je mi jasné, že psát bez komentářů není jednoduché, chce to praxi. Jenže bez
zkoušení se praxe nezíská. Hezky to popisuje Steve Yegge:
In the old days, seeing too much code at once quite frankly exceeded my
complexity threshold, and when I had to work with it I’d typically try to
rewrite it or at least comment it heavily. Today, however, I just slog through
it without complaining (much). When I have a specific goal in mind and a
complicated piece of code to write, I spend my time making it happen rather
than telling myself stories about it.
S tím se vlastně pojí čistý kód. Doporučuju si přečíst knížku Clean Code
nebo jsem o tom také psal na Zdrojáku v krátkém seriálu, kde se dozvíte jak psát
kód, který mluví sám za sebe.
Naivně jsem měl za to, že komentáře budou ubývat a ubývat, ale opak je
pravdou. Proto tento blogpost. Zahrajme si hru programujeme bez komentářů!
5
reakcí
Já bych šel opačnou cestou, chtěl bych programovat v komentářích, chci si s počítačem povídat. Ty zrůdnosti od programátorů, které musím denně číst mě moc netěší.
Souhlasím s tím, že komentář jen napravuje to co kód sám o sobě neříká. Každopádně bych je neházel všechny do jednoho pytle. Bez anotačních komentářů si nedokážu představit život v řadě jazyků. Komentář, který popisuje algoritmus/implementaci má také svoje místo.
Řekl bych to jinak, programujte, abyste nepotřebovali komentáře!
HgTS,
29. 12. 2012
S počítačem si nelze povídat. Kompilátory komentáře ignorují a čte je jen programátor, kterého akorát zdržují. Nezahrnuju do toho však anotační komentáře, dokumentační řetězce atp. To se omlouvám, že jsem výslovně nevyloučil.
Michal Hořejšek,
30. 12. 2012
Pár komentářů nikoho nezabije ne? Já si píšu poznámky i do htaccess. Je to jasné a přehledné.
Lepší přečíst 5 slov než hrotit kód ne? O to víc, když není můj.
Carl114,
1. 1. 2013
Myslel jsem to trochu nadneseně a narážel jsem na to, že často komentářem (psaným slovem) jsme schopni říct věci jednodušeji než programovacím jazykem. Programování není o ničem jiném než o sdělení informací a postupů počítači, způsob jakým výsledku dosáhneme je prostě jen volba jazyka, v kterém to zapíšeme. Jestli počítač bude rozumět psanému slovu stejně přesně jako C, proč ne :)
Schválně na doporučení jsem zkusil vynechat při programování všechny komentáře. No zatím se mi výsledek moc nelíbí, všiml jsem si, že komentář dělá v kódu optickou mezeru a kód se poté lépe čte.
Jinak samozřejmě souhlasím s tím, že komentáře se nesmí příliš množit a že jejich nadměrné používání škodí, chtěl jsem jen trochu protiřečit.
HgTS,
2. 1. 2013
@HgTS Však tvůj (mohu tykat?) komentář je v pořádku a jsem za něj rád. Doplňuje co jsem výslovně nenapsal a měl jsem. :)
Ono nejde o to jen vynechat komentáře, protože potom bude výsledek samozřejmě hůře čitelný. Musí se změnit styl programování, aby šlo komentáře vynechávat.
Například: Pokud je potřeba popsat co nese za informaci nějaká proměnná, pravděpodobně by stálo za to ji přejmenovat na něco vhodnějšího. Pokud metoda dělá něco nečekaného, co potřebuje komentář, zřejmě dělá více než by měla nebo se jmenuje nevhodně (což ani komentář nezachrání, protože někdo by se musel stejně podívat nejprve na implementaci metody, minimálně na doc string). Pokud je delší souvislý kus kódu, kde je touha psát „že tyhle dva řádky dělají to a tamty tři zase ono“, zřejmě je potřeba ten kus kódu rozbít do menších metod. A tak dále nemluvě o komentářích typu „do proměnné x nastavujeme jedničku“, ty se musí(!) smazat aniž by se cokoliv měnilo.
O takové typy komentářů mi jde. Dokumentační nebo popisné (proč to tak je či jak daný algoritmus funguje) komentáře jsou v pořádku. Stejně tak jako komentáře v cronu, htaccess a podobně.