Я думаю, что тема выбрана правильно. Это «круто» написать строку Perl, которая делает десять тысяч вещей одновременно, но тогда это отстой, когда вам нужно вернуться к ней.
На другом примечании, умном или нет, код должен быть задокументирован. Существует несоответствие импеданса между общепринятыми в отрасли языками программирования и концепциями высокого уровня, к которым мы, люди, привыкли в своем мышлении. Самодокументируемый код просто не реализуем - пока он не станет естественным языком, то есть. Даже код Пролога должен быть документирован, поскольку, каким бы высоким он ни был, он все же довольно формален.
Мелкозернистый императивный код служит для реализации крупнозернистых планов - это необходимо документировать. Я не хочу читать все 50 строк метода, когда подойдет быстрый трехстрочный комментарий.
Позднее редактирование: более красноречивым примером является тот, который выходит за рамки компьютеров. Книга может быть очень хорошо написана, но мы часто хотим обрабатывать ее на разных уровнях абстракции. Часто краткое изложение книги подойдет, и это то, что комментарии могут предложить код. Конечно, хорошо абстрагированный код может иметь большое значение для самостоятельной документации, но он не может дать вам все уровни абстракции.
Кроме того, комментарии могут выступать в роли sidenotes в книге, когда нам нужно объяснить процесс обоснования претензии в основном тексте, не нарушая ее.
В этом контексте я считаю, что мое предыдущее утверждение о естественном языке, выходящем за рамки комментариев, является неверным. Даже естественный язык, как в книге, может пригодиться для документации, для того, чтобы в редких случаях объяснить абстракцию, воплощенную в тексте, или для того, чтобы сделать обходные пути, не нарушая основного текста. С учетом того, что хорошо абстрагированный код, возможно, уже прошел долгий путь к самодокументированию.
Наконец, что не менее важно, комментарии могут помочь кодеру поддерживать высокий уровень абстракции. Часто я понимаю, что два последовательных комментария, которые я включил в список шагов, не говорят на одном и том же уровне абстракции, что сразу же требует критического взгляда на то, что я делаю с этим кодом.
Некоторые проблемы выходят за рамки кодирования и влияют на кодирование, как и другие действия. Комментарии могут помочь в разъяснении обоснования и аспектов нашего кода, и я нахожу их приятным компаньоном, который говорит на более мягком языке, чтобы помочь человеку для перемен.