Większość kodu pisanego nawet przez dobrych programistów nie jest wcale czytelna.
Może zatem nie są wcale dobrzy?
Większość programistów nie jest dobra.
Ale nawet dobry kod trudno zrozumieć bez dokumentacji, jeśli jest go 3 miliony linii, a masz znaleźć błąd na jutro.
A w każdym razie z dobrym komentarzem jest dużo bardziej czytelna niż bez.
A który komentarz z pierwszego posta jest dobry? Ten, który udaje system kontroli wersji, czy ten, który mówi, że funkcja sum2Vects
dodaje dwa wektory?
Pisałem ogólnie. Ale jak już przy tym jesteśmy, to komentarz z numerem błędu, który naprawia dany kod jest dobry. System kontroli wersji zawiera znacznie więcej informacji i znacznie więcej czasu zajmie wyszukanie z niego linku do błędu, bo trzeba jeszcze odszukać odpowiedni commit i przekopać się przez opisy. Natomiast komentarz od razu pokazuje, gdzie szukać.
Komentarz, który mówi, że funkcja dodaje dwa wektory, jest neutralny - nic nie wnosi, ale i nie przeszkadza. A właściwie to nawet może być użyteczny. Wpiszę w wyszukiwarkę "jak dodać dwa wektory" i mam szansę to znaleźć - właśnie po komentarzu.
chociaż w sumie... jeśli miałbym pracować z jakimś spaghetti kodem, to jednak wolałbym, żeby była dobra dokumentacja. Rzecz w tym, że to się ze sobą zwykle wiąże i jeśli kod jest słaby to i dokumentacja zwykle jest słaba (bo jeśli "nie ma czasu" pisać dobrego kodu, to tak samo "nie będzie czasu" pisać dobrej dokumentacji).
Brak dokumentacji jest gorszy niż słaba dokumentacja. Jeśli kod jest słaby i słaba dokumentacja, to jednak dokumentacja daje cień szansy, że autor bełkotliwie zawarł w niej jakieś informacje uzupełniające kod. BDORW z komentarzem Bardzo Duży Obiekt Robiący Wszystko nie jest ładne, ale jednak czytelniejsze niż samo BDORW.
komentarze często są pisane aby usprawieliwić błędnie napisany kod (złe nazwy, architektura, metody które robią za dużo, spaghetti)
komentarze uwalniają nas od poprawnego nazewnictwa
Naiwnym jest sądzić, że piętnowanie pisania komentarzy poprawi kod. Nie poprawi. Słabi programiści będą pisać słaby kod bez komentarzy i tyle.
To tak jakby zabronić testów i liczyć na to, że programiści zaczną pisać bezbłędny kod, bo nie mogą już polegać na testach, a muszą na sobie.