Деякі з наведених нижче тверджень є досить особистими, хоча з певним виправданням, і мають бути таким чином.
Типи коментарів
Для короткої версії ... я використовую коментарі для:
- трейлінг коментарів, що пояснюють поля в структурах даних (крім цих, я не використовую однорядних коментарів)
- виняткові або цілеспрямовані багаторядкові коментарі над блоками
- документація для публічного користувача та / або розробника, створена з джерела
Детальніше та (можливо, незрозумілі) причини читайте нижче.
Останні коментарі
Залежно від мови, використовуючи однорядкові або багаторядкові коментарі. Чому це залежить? Це лише питання стандартизації. Коли я пишу код С, я віддаю перевагу старомодному коду ANSI C89 за замовчуванням, тому вважаю за краще завжди мати /* comments */
.
Тому я мав би це в C більшій частині часу, а іноді (залежить від стилю бази коду) для мов з C-подібним синтаксисом:
typedef struct STRUCT_NAME {
int fieldA; /* aligned trailing comment */
int fieldBWithLongerName; /* aligned trailing comment */
} TYPE_NAME;
Emacs приємно і робить це для мене M-;
.
Якщо мова підтримує однорядкові коментарі, а не на основі С, я буду більше схильний використовувати однорядкові коментарі. Інакше я боюся, що зараз я взявся за звичку. Що не обов'язково погано, оскільки воно змушує мене бути лаконічним.
Багаторядкові коментарі
Я не погоджуюся з вашою заповіддю, використовуючи однорядкові коментарі, оскільки це є більш візуально привабливим. Я використовую це:
/*
* this is a multi-line comment, which needs to be used
* for explanations, and preferably be OUTSIDE the a
* function's or class' and provide information to developers
* that would not belong to a generated API documentation.
*/
Або це (але я цього вже не часто, за винятком особистої кодової бази або здебільшого для сповіщень про авторські права - це для мене історично і походить із мого навчального походження. На жаль, більшість IDE викручують це під час використання автоматичного форматування) :
/*
** this is another multi-line comment, which needs to be used
** for explanations, and preferably be OUTSIDE the a
** function's or class' and provide information to developers
** that would not belong to a generated API documentation.
*/
Якщо це дійсно потрібно, то я б прокоментував inline, використовуючи те, що я згадував раніше, для останнього коментаря, якщо є сенс використовувати його у позиції. На особливому зворотному випадку, наприклад, або до документа switch
«s case
заяви (рідко, я не часто використовувати перемикач), або коли документ гілки в if ... else
потоці управління. Якщо це не одне із них, зазвичай для мене більше сенсу є блок коментарів поза межами області, що окреслює етапи функції / методу / блоку.
Я використовую ці дуже винятково, за винятком випадків, коли кодування мовою без підтримки коментарів до документації (див. Нижче); в такому випадку вони стають більш поширеними. Але в загальному випадку це дійсно лише для документування речей, які призначені для інших розробників, і це внутрішні коментарі, які дійсно повинні дійсно виділятися. Наприклад, для документування обов'язкового порожнього блоку, як "примусового" catch
блоку:
try {
/* you'd have real code here, not this comment */
} catch (AwaitedException e) {
/*
* Nothing to do here. We default to a previously set value.
*/
}
Що для мене вже некрасиво, але я б терпів за певних обставин.
Коментарі Документації
Javadoc та ін.
Зазвичай я використовую їх у методах та класах для документування версій, що вводять функцію (або змінюють її), особливо якщо це для загальнодоступного API, та для надання деяких прикладів (із чіткими вхідними та вихідними справами та спеціальними випадками). Хоча в деяких випадках одиничний випадок може бути краще документувати, одиничні тести не обов'язково читаються людиною (незалежно від того, що DSL-річ ви використовуєте).
Вони клопочуть мене трохи, щоб документувати поля / властивості, так як я віддаю перевагу коментарям для цього, а не всі рамки генерації документації підтримують кінцеві коментарі документації. Наприклад, Doxygen є, але JavaDoc цього не робить, це означає, що вам потрібен головний коментар для всіх ваших полів. Я можу це пережити, оскільки більшість часу лінії Java є відносно довгими, тому зворотний коментар вирівняє мене однаково, розширивши лінію за межею мого похибки. Якби Javadoc коли-небудь подумає покращити це, я був би набагато щасливішим.
Коментований код
Я використовую однорядкові лише з однієї причини, мовою, схожою на C (за винятком випадків, коли компілюються для суворого C, де я їх справді не використовую): для коментування матеріалів під час кодування. Більшість IDE матимуть перемикач для однорядкових коментарів (вирівнювання за відступом або стовпцем 0), і це відповідає справжньому випадку для мене. Використання перемикача для багаторядкових коментарів (або вибору в середині рядків для деяких ІДЕ) ускладнить легко перемикатися між коментарями / коментарями.
Але оскільки я проти коментованого коду в SCM, це, як правило, дуже недовго, тому що я видаляю коментовані фрагменти перед тим, як зробити це. (Прочитайте мою відповідь на це питання на тему "відредаговані в рядку коментарі та SCM" )
Стилі коментарів
Я, як правило, пишу:
- завершити речення з правильною граматикою (включаючи пунктуацію) для коментарів до документації, оскільки вони, як передбачається, будуть прочитані пізніше в документі API або навіть як частина створеного посібника.
- добре відформатований, але більше розряджений на розділові знаки / знаки для багаторядкових блоків коментарів
- трейлінг без знаків пунктуації (через пробіл і, як правило, тому, що коментар є коротким, який читає більше, як твердження в дужках)
Примітка про грамотне програмування
Можливо, ви захочете зацікавитись грамотним програмуванням , як його представив Дональд Кнут .
Грамотна парадигма програмування [...] являє собою відхід від написання програм у порядку та порядку, накладених комп’ютером, і натомість дає можливість програмістам розробляти програми в порядку, який вимагає логіка та потік їх думок. 2 Грамотні програми написані як безперебійна експозиція логіки у звичайній людській мові, подібно до тексту есе [...].
Інструменти грамотного програмування використовуються для отримання двох представлень з грамотного вихідного файлу: одне, яке підходить для подальшої компіляції чи виконання комп'ютером, "заплутаний" код, а інше для перегляду у форматованій документації, яку, як кажуть, "сплетено" грамотне джерело.
Як бічна примітка та приклад: Рамка JavaScript underscore.js , незважаючи на невідповідність моєму стилю коментування, є досить хорошим прикладом добре кодової бази документів та добре сформованого анотованого джерела - хоча, можливо, не найкращим для використання як посилання API).
Це особисті умовності. Так, я можу бути дивним (і ти можеш теж бути). Це нормально, якщо ви дотримуєтесь кодових норм вашої команди під час роботи з однолітками або не радикально атакуйте їхні уподобання та приємно співіснуйте . Це частина вашого стилю, і ви повинні знайти тонку межу між розвитком стилю кодування, який визначає вас як кодер (або як послідовник школи думки чи організації, з якою ви маєте зв'язок) та дотриманням конвенції групи щодо послідовності. .
:3,7 Align //
вирівнювання коментарів у рядках 3-7.