Programování bez komentářů

cs v kategorii code • 2 min. čtení
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!

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.

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.

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 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ě.





Může se vám také líbit

en Makefile with Python, November 6, 2017
en Fast JSON Schema for Python, October 1, 2018
en Deployment of Python Apps, August 15, 2018
cs Jasně, umím Git…, August 6, 2014
cs Checklist na zabezpečení webových aplikací, March 1, 2016

Další články z kategorie code.
Nenechte si ujít nové články díky Atom/RSS kanálu.



Poslední příspěvky

cs Mami, tati, přejde to, December 9, 2023 in family
cs Co vše bychom měli dělat s dětmi?, November 24, 2023 in family
cs O trávicí trubici, November 7, 2023 in family
cs Na šestinedělí se nevyspíš, October 28, 2023 in family
cs Copak to bude?, October 20, 2023 in family