Найкращі практики написання коментарів та документації


20

Коментувати сьогодні простіше, ніж будь-коли. У Java є кілька приємних прийомів пов'язування коментарів до класів, і Java IDE добре допомагає робити оболонки коментарів для вас. Такі мови, як Clojure, навіть дозволяють додавати опис функції в сам код функції як аргумент.

Однак ми все ще живемо в епоху, коли часто є застарілі або погані коментарі, написані добрими розробниками - мені цікаво покращити надійність та корисність моїх коментарів.

Зокрема, мене тут цікавить Java / Clojure / Python, але відповіді не потребують мови.

Чи є які-небудь нові методи, які підтверджують коментарі і автоматично виявляють або "хиткі" коментарі (наприклад, коментарі з магічними номерами, неповні пропозиції тощо), або неправильні коментарі (наприклад, виявлення введених в оману змінних змінних тощо).

І ще важливіше: чи прийняті там "політики коментування" чи стратегії? Там є багато порад щодо кодування - але як щодо "як коментувати?"

Відповіді:


40
  • Імена / документація повинні говорити про те, що ви робите.

  • Впровадження повинно сказати вам, як ви це робите.

  • У коментарях слід сказати, чому ви робите це так, як ви робите.


6
коментарі також повинні розповісти, чому ви не робите це іншим способом - тобто важливим дизайнерським вибором - тому що майбутні технічні працівники не матимуть цієї інформації в іншому випадку.

2
Я вважаю, що багато разів у коментарі слід сказати, ЩО ви теж робите. Ця думка лише про "чому" коментарі - це, на мою думку, анти-модель. Це міф про те, що ви можете написати весь код досить чітко, що будь-який програміст може зрозуміти це з першого погляду, і мій досвід - це більшість програмістів, які думають, що вони пишуть чистий код, ні. Це те саме, що говорити: "Я не повинен називати цю функцію описово, тому що кожен може просто прочитати код у функції, щоб побачити, що вона робить". - це теж не має сенсу, чи не так?
Даллін

2
@dallin, якщо ваш код не зрозумів, що він робить; розгляньте його рефакторинг. в іншому випадку додайте коментар, пояснюючи, чому він реалізований так (що трапляється і для пояснення того, як краще). Ваше порівняння з описовими назвами - це яблука / апельсини, описова назва дає зрозуміти, де використовується ця функція , і ви, можливо, не маєте доступу до вихідного коду функції.
храповик урод

@dallin: "Це міф, що ви можете написати весь код досить чітко, щоб будь-який програміст міг зрозуміти це з першого погляду", дядько Боб хотів би поговорити з вами. - "Мені не потрібно називати цю функцію описово, тому що кожен може просто прочитати код у функції, щоб побачити, що вона робить", даючи хороші та чіткі імена змінним та методам саме так, як програмісти повинні зрозуміти, який їх код робить!
klaar

14

Це може бути суперечливим, але моя порада буде писати якомога більше коментарів FEW. Використовуйте замість приємних, чітких імен класів, назв змінних та методів. Напишіть свій код найяснішим способом; і вважати це найважливішим атрибутом вашого коду (крім того, що він відповідає його вимогам). Запишіть коментар лише в тому випадку, якщо ви зробили метод настільки зрозумілим, наскільки це можливо, і ви все ще вважаєте, що це потребує подальшого пояснення.

І мають організаційну практику, щоб кожен раз, коли хто-небудь змінив клас, повинен переконатися, що коментарі все-таки є правильними.


1
Це вдалий початок, але я думаю, щоб задовольнити питання ОП, вам потрібно буде написати щось, що стосується його актуальних проблем щодо автоматичної перевірки.
Роберт Харві

2
+1 - Я також вважаю, що коментарі слід використовувати лише для пояснення того, чому написано код. Я знаю, що if (a == b) then c();робить, але якщо я не знаю, чому це робиться, - тоді слід використовувати коментар :)
Деко

Деко - я згоден повністю. Коментарі хороші, коли я хочу зрозуміти, як певний метод вписується в процес в цілому. Іншими словами, ЧОМУ ви б назвали цей метод, або ЧОМУ він робить те, що робить.
Давуд каже, що повернемо Моніку

Окрім того, щоб зробити чіткий письмовий код, ми також повинні переконатися у збереженні (на рівні коду) ідей, думок тощо за допомогою коментарів TODO. Наприклад, якщо ви бачите, що функція / клас здатна правильно обробляти поточний розмір даних, але, можливо, не вдасться впоратися з завантаженням через 2 роки, тоді обов'язково напишіть своє спостереження за допомогою коментаря TODO. Майбутні розробники дійсно оцінять ваші зусилля. Ніколи не намагайтеся зазначити ці речі в окремому документі txt / word, під час написання коду ніхто не посилається на такі документи.
TechCoze


5

Я не впевнений , про інших мовах, але пітона дозволяє писати doctests , які є однією з форм самостійної перевірки коментарів. Звичайно, їх не слід використовувати замість реального тестування одиниць, але це швидкий і простий метод документування конкретних функцій, який може бути не таким очевидним, як повинен бути. Вони отримують додаткову перевагу від можливості виконувати тести коментарів, щоб перевірити, чи залишаються коментарі правильними (принаймні, частиною з них, які містять тести).


1
І Sphinx порівнює код з документацією, щоб забезпечити показники покриття.
С.Лотт

3

Одне з найавторитетніших місць для пошуку способів використання коментування коду для автоматичного генерування документації - це, звичайно, доксиген . Хоча я міг би більше таких інструментів.

Це визначає стандарт написання коментарів, якого слід дотримуватися для автоматичного створення документації. Однак це дає більше структури, але не підтверджує семантично; наприклад, він не може перевірити, чи ви використовували оманливу англійську мову для опису мети функції!

Хоча це найкраще, що робить коментарі структурованими, я особисто вважаю, що є більше документації, необхідної для того, щоб зробити код більш ремонтопридатним. Деякий час назад у P.SE виникло питання, чи може код бути документацією в інструментах для розробників з відкритим кодом? Як часто це відбувається? Звичайно, це стосується і проектів без відкритого джерела.

Щоб зробити код більш рентабельним - практично важливіше, що існує зовнішня документація, яка допомагає створити структуру способу поводження з кодом, а потім коментарі всередині коду повинні бути обмежені для перегляду

Я думаю, якщо ви хочете визначити політику написання коментарів, ви повинні включити як цілісний підхід, включений до стандарту кодування. Дивіться це: Які можуть бути певні помилки у впровадженні керівництва зі стилів та створення документації програмного забезпечення в команді розробників?

Зазвичай коментарі становлять менше 5% коду. І на практиці, хоча самі перевірки коду привертають значно менше уваги (порівняно з іншими аспектами розвитку), практично складно, що коментарі також переглядаються.


1
Я не згоден з останнім реченням тут. Я щойно закінчив контракт, працюючи під керівником команди, який дав дуже детальні відгуки. Його огляди завжди включали коментарі - як вони були сформульовані, чи були імена змінних правильними, чи містили вони всю інформацію, яку, можливо, захоче знати майбутній розробник. Невдовзі я знав, що він очікує побачити в кожному коментарі, і зміг висловити коментарі до свого стандарту. Отже, за умови організаційної політики перегляду коду та включення коментарів до огляду коду, це станеться.
Давуд каже, що повернемо Моніку

Зазвичай це єдиний вид коментаря, який я пишу, особливо для методів документування того, що відбувається і що з цього виходить (я працюю з невірно набраними мовами).
DanMan

2

Чи є які-небудь нові методи, які підтверджують коментарі і автоматично виявляють або "хиткі" коментарі (наприклад, коментарі з магічними номерами, неповні пропозиції тощо), або неправильні коментарі (наприклад, виявлення введених в оману змінних змінних тощо).

Існує добре відома методика - вона називається "перегляд коду" і має сестру на ім'я "парне програмування". Тут не чекайте нічого "автоматизованого".

І ще важливіше: чи прийняті там "політики коментування" чи стратегії? Є багато порад щодо того, як кодувати ---, а як щодо "як коментувати?"

"Код завершений" містить не тільки все про те, як кодувати, але й глави "як коментувати", особливо про те, як писати код самодокументування.


+1 для коду завершено. Чистий код Роберта Мартіна також має хорошу главу про написання корисних похвал. Я не впевнений у світі Java, але у світі .NET у нас є Resharper, який може "автоматично" перевіряти посилання на елементи коду у коментарях :)
MattDavey

0

Характерне для Java одне джерело, яке мені сподобалося, - це як писати коментарі докуму Oracle для інструменту Javadoc :

Цей документ описує посібник зі стилів, теги та умовні позначення, які ми використовуємо в коментарях до документації для програм Java, написаних на Java Software, Sun Microsystems.

І Пункт 44: Напишіть коментарі док для всіх відкритих елементів API :

Якщо API повинен бути використаний, він повинен бути задокументований. Традиційно документація API створювалася вручну, а синхронізація її з кодом була справжньою справою. Середовище програмування Java полегшує це завдання за допомогою утиліти Javadoc. Javadoc автоматично генерує документацію API з вихідного коду із спеціально відформатованими коментарями до документації, більш відомими як коментарі док.

від ефективної Java 2nd Edition .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.