Я всегда и комменты пишу, и стараюсь давать всем сущностям (классам, методам, переменным, ф-ям) осмысленные имена. Причем чем больше область видимости переменной, тем длиннее делаю имя. Если нечто является константой - то ее имя все целиком пишу в верхнем регистре.
Я как-то подсчитал, что если продолжу программировать еще 70 лет и буду каждый день писать по 50 строк (в среднем быстрее писать не выходит, только если что-то совсем простое), то за всю жизнь напишу всего лишь около 1 млн 250 тыс. строк. То есть мне за всю жисть не написать программу эквивалентную по размеру бортовому ПО истребителя F-22 (кажется), написанному на Ada и состоящему где-то из 2 млн. строк.
Это я к тому, что на мой взгляд - дважды написанный один и тот же код - пустая трата времени и сил. Из-за этого меня очень бесит, когда я знаю, что уже писал что-то подобное, а работающий код потерял или стер. Поэтому я стараюсь свой код создавать по возможности универсальным и поподробнее комментировать (особенно процедуры и ф-ции - какие параметры они принимают, что делают и что возвращают).
На днях использовал код, который написал в 2002 или 2003 году (base64 кодирование/декодирование).
Так что имхо, надо документировать, по-возможности - на нормальном русском языке