Я думаю, що тема вдало обрана. "Класно" написати рядок Perl, який робить десять тисяч речей все одночасно, але потім це смокче, коли доведеться переглянути його.
Інша примітка, розумна чи ні, код повинен бути задокументований. Існує властива невідповідність імпедансу між загальноприйнятими в галузі мовами програмування та концепціями високого рівня, до яких ми, як люди, звикли в своєму мисленні. Самодокументування коду просто неможливо зрозуміти - поки він не стане природною мовою, тобто. Навіть код Prolog повинен бути задокументований, оскільки, яким би високим він не був, він все ще є досить формальним.
Дрібнозернистий імперативний код слугує для реалізації планів грубозернистого зерна - це потрібно задокументувати. Мені не хочеться читати всі 50 рядків методу, коли буде зроблено швидкий 3-рядковий коментар дорожньої карти.
Пізніше редагуйте: Більш красномовний приклад - той, який виходить за рамки комп'ютерів. Книга може бути дуже добре написана, але ми часто хочемо обробляти її на різних рівнях абстракції. Часто резюме книги буде робити, і саме це може запропонувати кодувати коментарі. Звичайно, добре абстрагований код може пройти довгий шлях до самодокументації, але він не може дати вам всі рівні абстракції.
І коментарі можуть також діяти так, як це є в книзі, коли нам потрібно пояснити процес аргументації позову в основному тексті, не збиваючи його.
Зважаючи на цей контекст, я вважаю, що моє попереднє твердження про природну мову, що перевищує потребу в коментарях, є невірним. Навіть натуральна мова, як у книзі, може піддаватися документації, роз'яснювати рідко абстракцію, втілену в тексті, або надавати об'їзди, не збиваючи основного тексту. Зауваживши, що добре абстрагований код, можливо, вже пройшов довгий шлях до самодокументування.
І останнє, але не менш важливе, коментарі можуть допомогти кодеру підтримувати високий рівень абстракції. Часто я усвідомлюю, що два послідовних коментарі, які я включив до списку кроків, не говорять на одному рівні абстракції, що негайно вимагає критичного погляду на те, що я роблю з цим кодом.
Певні проблеми виходять за рамки кодування і впливають на кодування так само, як і інші дії. Коментарі можуть допомогти роз'яснити обґрунтування та аспекти нашого коду, і я вважаю їх приємним супутником, який говорить більш м'якою мовою, щоб принести користь людині для змін.