Есть такая штука - literate programming, ещё одно изобретение Дональда Кнута. Так там документация - интегральная часть исходников. И программы выглядят идейно так: "Сейчас мы расскажем, что мы тут собираемся делать. Нам нужна переменная, показывающая количество элементов в нашем контейнере. Для обеспечения независимого доступа из различных процессов мы ставим защиту на эту переменную." synchronized int nElements;
Learn about literate programming using the CWEB tool for software development. Download a free CWEB distribution for Microsoft Windows
// www.literateprogramming.com
Мне такой код нравится тем, что после полугодового отсутствия
приходишь обратно к собственному коду и быстро разбираешься, что и почему тут было сделано. В принципе, достаточно далеко продвинутая идея о встроенной документации. ЯВУ вообще в основном строятся для удобства человеку решать определённые классы задач; документация - просто ещё одно удобство.
По самодокументируемости, мне нравится реализованная широко в Яве идея явадоков. Теперь в Си этого не хватает
. Вообще, последнее время практика программирования у меня как-то дрейфует в целом в сторону XP. Такие качества всё важнее становятся - много комментариев, всё более компонентный подход, пишется код, ориентированный на написание проверочного кода... и частое переписывание с целью полирования
.
По поводу форматирования вообще религиозные войны бушуют. Вроде бы хорошим решением является каждому иметь себе свой собственный форматтер, который форматирует код под свой вкус. Получается, что каждый всегда работает с кодом, организованным в лучшей для него форме. Такой же форматтер надо иметь на сервере контроля версий, чтобы не было иллюзий, что каждое изменение кода затрагивает файл целиком. Форматтерам, конечно, приходится быть достаточно умными
.