Myślę, że temat jest dobrze wybrany. „Fajnie” jest napisać wiersz Perla, który robi dziesięć tysięcy rzeczy naraz, ale potem jest do kitu, gdy trzeba go ponownie odwiedzić.
Z innej notatki, sprytnej czy nie, kod musi być udokumentowany. Istnieje nieodłączna niedopasowanie impedancji między akceptowanymi w branży językami programowania a wysokopoziomowymi koncepcjami, do których my, ludzie, jesteśmy przyzwyczajeni w naszym myśleniu. Kod samodokumentujący jest po prostu niemożliwy do zrealizowania - dopóki nie stanie się językiem naturalnym. Nawet kod Prolog wymaga udokumentowania, ponieważ niezależnie od tego, jak wysoki jest poziom, nadal jest dość formalny.
Drobnoziarnisty kod imperatywny służy do wdrażania gruboziarnistych planów - co należy udokumentować. Nie chcę czytać wszystkich 50 wierszy metody, gdy zrobi to szybki 3-liniowy komentarz do mapy drogowej.
Późniejsza edycja: bardziej wymownym przykładem jest ten, który wykracza poza komputery. Książka może być bardzo dobrze napisana, ale często chcemy ją przetwarzać na różnych poziomach abstrakcji. Często wystarczy podsumowanie książki i to właśnie komentarze mogą zaoferować kodowi. Oczywiście dobrze wyodrębniony kod może znacznie przyczynić się do samodzielnej dokumentacji, ale nie może zapewnić wszystkich poziomów abstrakcji.
Komentarze mogą również zachowywać się jak sidenotes w książce, gdy musimy wyjaśnić proces uzasadnienia roszczenia w tekście głównym bez wykolejenia go.
W tym kontekście uważam, że moje wcześniejsze stwierdzenie odnoszące się do języka naturalnego wykraczającego poza potrzebę komentarzy jest nieprawidłowe. Nawet język naturalny, tak jak w książce, może nadawać się do dokumentacji, aby wyjaśnić w rzadki sposób abstrakcję zawartą w tekście lub zapewnić objazdy bez wykolejenia głównego tekstu. Uwaga: dobrze wyodrębniony kod mógł już przejść długą drogę w kierunku samodokumentowania.
Wreszcie, komentarze mogą pomóc koderowi utrzymać wysoki poziom abstrakcji. Często zdaję sobie sprawę, że dwa kolejne komentarze, które zamieściłem na liście kroków, nie mówią na tym samym poziomie abstrakcji, co natychmiast gwarantuje krytyczne spojrzenie na to, co robię z tym kodem.
Niektóre problemy wykraczają poza kodowanie i wpływają na kodowanie, podobnie jak inne czynności. Komentarze mogą pomóc w wyjaśnieniu uzasadnienia i aspektów naszego kodu, i uważam je za miłego towarzysza, który mówi łagodniejszym językiem, aby przynieść korzyść osobie dla odmiany.