Только // (никаких /* */). Маркеры SyntaxMarks в конце строки
через 3 пробела. Для строк <doc>/</doc> второй
// перед иконкой не ставим.
// <doc>
// <summary>Форматированный вывод: {P1},{P2} или {Имя}.</summary> ✦
// <param i="1" name="Template" type="String">Шаблон</param> ➤
// <param i="2" name="Params" type="Array|Structure">Массив/Структура значений</param> ➤
// <returns>String — итоговая строка</returns> ⬅
// <complexity cc="3"/>
// <example>
// // A1sS.FormatPlaceholders("Hi {P1}", Новый Массив("Ann"));
// // A1sS.FormatPlaceholders("Привет, {Имя}", Новый Структура("Имя", "Боб"));
// </example>
// </doc>
<param/returns/locals/complexity/example> легко парсятся
линтером/генераторами.
i="1..n", имя и тип
параметра уменьшают риск «скопипастили и забыли поменять».<complexity cc="k"/> позволяет хранить
фактическую цикломатику рядом с функцией.<example>, длинные сценарии — в
отдельном регионе #Region examples_*.// Типовой «вольный» блок 1С:
// Функция: Форматирование строки
// Параметры: Template (Строка), Params (Массив/Структура)
// Возврат: Строка
// A1sCode XML-док (структурировано):
// <doc>
// <summary>Форматированный вывод: {P1},{P2} или {Имя}.</summary> ✦
// <param i="1" name="Template" type="String">Шаблон</param> ➤
// <param i="2" name="Params" type="Array|Structure">Массив/Структура</param> ➤
// <returns>String — итоговая строка</returns> ⬅
// <complexity cc="3"/>
// </doc>
Итог: типовой блок удобен глазами, но непредсказуем для машин; XML-док A1sCode одинаково хорошо читает и человек, и инструмент.
// , внутренний отступ — 2 пробела.<summary>; ➤ — у
<param>; ⬅ — у <returns>.
<doc>/</doc> — без маркера.