Нужны ли комментарии для языка программирования? - PullRequest
23 голосов
/ 24 декабря 2008

После некоторых глупых размышлений о клингонских языках, которые пришли из этого поста , я начал глупый хобби-проект по созданию языка программирования клингон, который компилируется в байт-код Lua. На начальном этапе разработки языка я посмотрел информацию о клингонских программистах и узнал об этом правиле программирования клингона:

ИСТИННЫЙ Клингонский Воин не комментирует свой код!

Поэтому я решил, что мой язык не будет поддерживать комментирование , поскольку любой хороший клингон никогда не будет их использовать.

Теперь многие из способов клингона не кажутся нам разумными программистами, однако, увлекаясь разработкой и реализацией моего языка хобби, я понял, что это правило клингона о комментировании действительно очень разумно, если не велико.

Удаление возможности комментировать с языка программирования означало, что я ДОЛЖЕН написать грамотный код , без исключений.

Так что мне стало интересно, есть ли какие-нибудь языки, которые не поддерживают комментарии?

Есть ли действительно хорошие аргументы, чтобы не удалять комментарии из языка?

Редактировать: Нужны ли хорошие примеры комментариев?


P.S.> Мой язык для хобби выше, в любом случае, частично глупый, так что не зацикливайтесь на моей реализации, столько, сколько требуется концепция комментариев в общем

Ответы [ 31 ]

22 голосов
/ 24 декабря 2008

Не комментируйте, ЧТО вы делаете, но ПОЧЕМУ вы это делаете.

О ЧЕМ заботится чистый, читаемый и простой код с правильным выбором имен переменных для его поддержки. Комментарии показывают структуру более высокого уровня для кода, который нельзя (или трудно) показать самим кодом.

21 голосов
/ 24 декабря 2008

Я не уверен, что согласен с «Имею» в утверждении «Удаление возможности комментировать из языка программирования означало, что я ДОЛЖЕН писать грамотный код, без исключений», поскольку это не так, как будто весь код документирован. Я предполагаю, что большинство людей будут писать нечитаемый код.

Более того, я лично не верю в реальность самоочевидной программы или API в практическом мире.

Мой опыт анализа вручную всей документации API для моей диссертации показывает, что слишком часто вам придется нести больше информации, чем вы могли бы передать только в подписи. Если вы исключите комментарии интерфейса из вашего языка, какие есть альтернативы? Нет документации не вариант. Внешняя документация реже читается.

Что касается внутренней документации, я вижу, что вы хотите уменьшить объем документации, чтобы убедить людей писать лучше. Тем не менее, комментарии служат многим целям сотрудничества и координации и предназначены для повышения осведомленности о вещах. Отправляя эти данные в внешние местоположения, вы уменьшаете вероятность того, что они придут к пониманию будущего читателя, если ваш инструмент не будет отличным.

12 голосов
/ 24 декабря 2008

Тьфу, неспособность быстро закомментировать строку (или строки) во время тестирования меня раздражает, особенно при написании сценариев.

7 голосов
/ 24 декабря 2008

Ваш код имеет две разные аудитории:

  • Компилятор
  • Людей, подобных нам

Если вы решите полностью удалить комментарии, вы предполагаете, что вы будете заботиться только о компиляторе и ничего больше.

Конечно, будучи клингоном, вам могут не понадобиться комментарии, потому что вы не человек. Возможно, вы могли бы ясно продемонстрировать нам свои способности, говоря вместо этого на ИЛ?

7 голосов
/ 24 декабря 2008

В общем, комментарии - это бородавка, которая указывает на плохой дизайн, особенно длинные бессвязные комментарии, где ясно, что разработчик не имел ни малейшего понятия, какого черта они там делали, и пытался восполнить это, написав комментарий.

Места, где комментарии полезны:

  • Оставив номер заявки рядом с исправлением, чтобы будущие программисты могли понять бизнес-требования
  • Объяснение особенно хитрого взлома
  • Комментарий к бизнес-логике для фрагмента кода
  • Краткие описания в документах API, чтобы сторонний пользователь мог использовать ваш API

При любых обстоятельствах программистам следует стремиться писать описательный код, а НЕ писать комментарии, описывающие плохо написанный код. При этом я думаю, что есть много веских причин, по которым языки должны и должны поддерживать комментарии.

4 голосов
/ 24 декабря 2008

Мне любопытно. Как вы мешаете кому-то объявить статическую строку, содержащую комментарий, а затем игнорировать переменную для остальной части функции / метода / процедуры / битвы / чего угодно?

var useless_comment = "Can we destroy our enemies?"
if (phasers on full) return Qapla'
3 голосов
/ 24 декабря 2008

Языки нуждаются в комментариях. По крайней мере, 95% комментариев можно заменить более понятным кодом, но все еще существуют предположения, которые необходимо документировать, и вам абсолютно необходимо документировать, если есть какие-то внешние проблемы, с которыми вы работаете.

Я никогда не пишу комментарий без предварительного рассмотрения, могу ли я изменить код, чтобы устранить необходимость в нем, но иногда вы не можете.

3 голосов
/ 24 декабря 2008

Я единственный, кто комментирует пару строк код для ряда целей?

3 голосов
/ 24 декабря 2008

Хотя весь исходный код защищен авторским правом по умолчанию. Часто приятно:

  1. напоминать лицу, читающему исходный код, что на него распространяется авторское право

  2. сообщить людям, каковы условия лицензирования для этого файла исходного кода

  3. скажите им, смотрят ли они на охраняемую коммерческую тайну

К сожалению, без комментариев это сделать сложно.

3 голосов
/ 24 декабря 2008

Вы не нуждаетесь в единственном утверждении в своем коде, потому что в режиме выпуска они все исчезли. Но когда в C ++ не было встроенных утверждений, кто-то написал макрос assert, чтобы заменить его.

Конечно, вам не нужно комментариев , по более или менее той же причине. Но если вы создадите язык без комментариев, люди начнут делать что-то вроде:

HelperFunctionDoesNothing("This is a comment! Blah Blah Blah...");
...