Я стараюсь прокомментировать каждую функцию, описывающую на высоком уровне, но точный способ, что делает функция. Точность должна быть такой, что нет необходимости читать тело функции, чтобы понять, что делает эта функция, или повторно реализовать ее, и работать с любым кодом, который ее вызывает.
Помимо этого, я стараюсь, чтобы функции были достаточно малыми, что выше в основном вся необходимая документация.
Время от времени может быть что-то неясное или нечетное в том, что делается в коде - я документирую это. Все, что не является очевидным или интуитивно правильным, или что вы потратили некоторое время на размышления, должно быть документировано.
Представьте, что у вас есть проблема с памятью и вы забудете написать эту программу через месяц. Тогда представьте, что вы должны вернуться и исправить. Что бы вы хотели прокомментировать и как эти комментарии могли быть наиболее полезными для вас?
Это похоже на хороший кандидат для сообщества wiki – danben