Существуют продолжающиеся незначительные дебаты, где я работаю об эффективности комментариев в рамках кода. Одно из приведения дало его разработчикам команду не использовать комментарии, поскольку они слишком "старомодны", и несколько других разработчиков указали, что никогда не используют комментарии, потому что они чувствуют все, что они делают, загромождают код.
Я всегда в значительной степени придерживался практики, что я комментирую вершину каждого файла с основным блоком комментария, комментирую каждое определение метода/класса/и т.д., и затем я комментирую любое место в коде, где я думаю, что мог бы возвратиться через 6 месяцев и думать мне, "WTF".
Очевидно это субъективно, но мне любопытно знать, есть ли у кого-либо какие-либо действительно хорошие аргументы или события для так или иначе.
За всю свою карьеру я ни разу не встречал того чудесного зверя «самодокументирующегося кода». Может, мне просто не повезло, но я начинаю подозревать, что этого на самом деле не существует.
Проблема с комментариями заключается в том, что они, как правило, сохраняются долгое время после того, как закомментированный код был изменен или даже удален.
Как правило, я бы прокомментировал только общедоступные API и сложные для понимания алгоритмы.
Не используйте комментарии, чтобы объяснить, что вы сделали - это то, для чего предназначен код, используйте комментарии, чтобы объяснить, почему вы это сделали.
Эта тема часто обсуждается, но вот мои 0,02 доллара США по этому поводу:
Перед кодом или перед функцией следует написать комментарий, чтобы в следующий раз, глядя на функцию, человек мог сразу понять, с какой целью был написан этот код.
Со мной много раз случалось, что я писал код, а потом забывал его назначение. Поэтому я взял за правило писать комментарий перед кодом.
Диомидис Спинеллис только что написал хорошую колонку для IEEE column (цитируется в его блоге), излагая проблему и несколько решений:
При комментировании мы всегда находимся в паре мы всегда находимся в паре нажатий клавиш от катастрофы: переформулировать функцию кода на английском языке. И вот тут-то и начинаются проблемы начинаются.
Что бы я хотелось бы видеть в комментариях объяснение, почему метод, который очевиден и намного проще, чем метод, использованный в коде, не работает.
Это уже обсуждалось до смерти.
Я просто отсылаю вас к замечательному посту Джеффа Этвуда на эту тему , который бьет в самую точку.
Время от времени я натыкаюсь на код, который так элегантно разбит на разделы, имеет такие убедительно очевидные имена методов, полей и переменных, что все, что мне нужно знать, очевидно из кода.
В общем случае такой код пишут только действительно великие гуру кода. Остальные из нас лепят что-то, что работает.
«Один из потенциальных клиентов проинструктировал своих разработчиков не использовать комментарии, поскольку они слишком« старомодны », а пара других разработчиков указали, что они никогда не используют комментарии, потому что считают, что все, что они делают, это засорять код ».
Если бы я когда-нибудь слышал, чтобы разработчик, с которым я работал, говорил подобное, я бы поправил их. Если бы у меня не было ранга, необходимого для их исправления, я бы уволился с работы.
Очень четко написанный код с хорошими идентификаторами - материал, который иногда называют «самодокументированным» - прекрасно иллюстрирует, что делает код. Это нормально, насколько это возможно. Задача комментариев - объяснить , почему .