По-видимому, не на одном языке комментарии не могут быть вложенными. У вас есть хорошее решение этой проблемы? Одним из обходных путей в C / C ++ и Java является использование только однострочного комментария, но тогда становится невозможным закомментировать больший блок. Я сталкиваюсь с чем-то вроде этого:
</li><!--
<li><!-- Save -->
Поэтому я должен вручную пройти и отредактировать комментарии. Можете ли вы посоветовать, как мы должны справиться с этим, на многих языках? Я не уверен, но, возможно, у python есть решение для этого '''
путем, который мог бы включать #
комментарий в python? `
'''
и"""
являются строковыми литералами . Бывает, что интерпретатор оценивает их во время компиляции (для байт-кода) и распознает строковые литералы как no-ops (следовательно, они не замедляют время выполнения / загрузки байт-кода). Строки документов, то есть строковые литералы сразу после,def
но перед телом, не удаляются, поскольку интерпретатор предполагает, что они предоставляют документацию для функции.#if 0
<code>#endif
. Так что это на самом деле не проблема. Использование комментариев для этого - неправильный инструмент.Ответы:
Лучшее решение, очевидно, просто не вкладывать свои комментарии. Вложенные комментарии обычно являются признаком того, что вы используете комментарии неправильно. Наиболее распространенным примером является закомментированный код, который содержит сами комментарии, и исправление состоит в том, чтобы удалить код, а не комментировать его.
Тем не менее, многие языки программирования имеют более одного типа синтаксиса комментариев, и вы можете использовать этот факт для вложения как минимум на один уровень глубины. Например, в Java:
Кроме того, во многих языках по крайней мере один тип комментариев является своего рода вложенным; в C-подобных языках строчные комментарии внутри строчных комментариев игнорируются:
Большинство IDE поддерживают комментирование целых блоков кода строковыми комментариями в одном действии, и они правильно обрабатывают этот стиль комментирования. Тот же пример в Python:
Часто стандарты кодирования для конкретного проекта имеют правила о том, какой стиль комментариев использовать, когда; Общепринятым условием является использование блочных комментариев (
/* */
) для документации методов и классов и встроенных комментариев (//
) для замечаний внутри тел методов и таких, например:При таком стиле маловероятно, что вам когда-либо понадобится вкладывать
/* */
комментарии (если вам нужно временно отключить целые методы или классы, переименование их работает так же хорошо, если не лучше); и//
комментарии делают гнездо, по крайней мере , с небольшой помощью интегрированной среды.Наконец, чтобы отключить код, у вас есть другие варианты во многих языках программирования; например, в C вы можете использовать препроцессор:
В динамических языках вы можете
if
вместо этого просто использовать регулярные операторы:Однако, в отличие от примера CPP, эта стратегия требует, чтобы исходный файл в целом был синтаксически верным, поэтому он далеко не такой гибкий.
И, наконец, есть, по крайней мере, некоторые языки, которые допускают вложенные комментарии. Если вам интересно, в Википедии есть хорошая сравнительная таблица .
источник
// And now for something completely different...
C и C ++ имеют вложенный блок комментариев:
Многие редакторы с подсветкой понимают это как комментарий, а многие другие, по крайней мере, выделяют его как любой другой условно отключенный код.
Во многих других языках вы должны полагаться на поддержку редактора. Для языков, которые имеют только строчные комментарии (perl, python, ruby, shell ...), достаточно просто добавить символ комментария ко всем строкам в диапазоне, поэтому большинство редакторов могут это сделать. Вы все еще можете сказать, что было комментариями, прежде чем комментировать весь блок, потому что символ комментария удваивается - здесь это просто преимущество.
XML и SGML, вероятно, самая большая боль, это определение комментариев просто глупо. Комментарии были бы тривиальными для вложения, но они не только не имеют, это полностью запрещено иметь
--
внутренний комментарий. К сожалению, я не знаю, какие редакторы имеют хорошую поддержку для комментирования в SGML / XML.источник
#if _
что тоже хорошо работает и становится серым в моем VS с Re #. Хороший совет!Хотя это не является общим решением и, конечно, не идеальным, один из способов решения этой конкретной проблемы состоит в использовании языка обработки шаблонов на стороне сервера для создания блочных комментариев для элементов комментариев вложенного кода. Это оставляет содержимое практически без изменений, но не позволяет отправить его в браузер клиента.
Это не очень помогает, если файл представляет собой простой и чистый контент, не требующий обработки на стороне сервера. В этом случае и в более общем случае вложенных комментариев спросите, почему вы хотите это сделать. В большинстве этих случаев можно обнаружить, что лучший способ справиться с этим - не справиться со всем этим. Другими словами, если вы хотите исключить раздел, то удалите его, и пусть управление версиями обрабатывает запоминание различий, если этот раздел как артефакт необходимо когда-либо воскресить.
источник
В случае HTML / XML вы можете использовать несуществующую инструкцию обработки: см. Мой ответ по SO
источник
Swift поддерживает вложенные комментарии, поэтому «кажется, что комментарии не могут быть вложены не на одном языке» больше не является верным утверждением. Если вы недовольны отсутствием поддержки вложенных комментариев на вашем языке программирования, я бы предложил попробовать Swift.
Язык программирования Swift: основы
источник
Язык программирования D имеет встроенные комментарии:
Другими словами
/+
и+/
комментарии гнездятся.источник