Що я повинен включати в коментарі до документації XML?


13

Я намагаюся зробити точку документування свого коду краще, особливо коли мова йде про коментарі XML щодо членів класу, але часто це просто глупо.

У випадку з обробниками подій, умовні умови і параметри імен є стандартними та зрозумілими:

/// <summary>
/// Handler for myCollection's CollectionChanged Event.
/// </summary>
/// <param name="sender">Event Sender</param>
/// <param name="e">Event Arguments</param>
private void myCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    // actual code here...
}

У мене також часто є прості властивості, які чітко названі (IMO), щоб резюме було зайвим:

/// <summary>
/// Indicates if an item is selected.
/// </summary>
public bool ItemIsSelected
{ get { return (SelectedItem != null); } }

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

Очевидно, що XML-документація - це не просто звичайні вбудовані коментарі, а в ідеалі матиме 100% охоплення. Що повинен я бути писати в таких випадках? Якщо ці приклади в порядку, яке значення вони додають, що я, можливо, зараз не оцінюю?


6
"і в ідеалі матиме 100% покриття" - Це дуже дискусійно. Мені вони подобаються для публічного інтерфейсу типу виключно для інтелігенційних спливаючих вікон, але для приватних методів вони просто занадто багатослівні IMO
Ed S.

3
100% покриття не стосується приватних методів, особливо обробників подій.
СЛАкс

1
GhostDoc пише мені свою документацію. "Що ти GetData()робиш", запитаєш ти? Чому, це Gets the dataзвичайно!
Девін Берк

2
@Justin: GhostDoc виглядає досить круто. Я можу забрати це.

1
@Justin: аргу, я ненавиджу GhostDoc - спочатку це здається блискучим, але через деякий час ти розумієш, що можеш помітити автоматично створені коментарі за милю, як правило, коли ти повертаєшся до старого коду і мусиш зрозуміти, що він робить. Хоча XML дуже легко коментує все, що не гарантує, що ці коментарі містять у них фактичну інформацію. GhostDoc дає вам гарну відправну точку, але дуже легко лінуватися і залишати все те, чого ви не могли зрозуміти, поглянувши на ім’я та підпис.
Кіт

Відповіді:


10

Коментарі XML-документа призначені для публічних членів.

У попередженні компілятора чітко зазначено це:

Відсутній коментар XML для загальнодоступного типу або члена "Type_or_Member"

Ви можете додавати XML-коментарі до приватних членів лише у тому випадку, якщо ці члени вже не зрозуміли з їх імен.


6

Тут чиста думка, тому прийміть її за те, що вона варта.

Я ненавиджу зайві коментарі xml. Подвійно для стилів doc doc, які просто додають пробіли до імені методу / властивості. Це не додає ніякого значення і просто забиває мій погляд на фактичний код.

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

Навіть не пускайте мене на непотрібне використання this.та Me..

Як бічну зауваження, я хотів би мати додаток Visual Studio, який дозволив би мені змінити видимість коментарів xml. (підказка)


Я б здогадався, що this.це може початись, тому що чомусь офіційні рекомендації Microsoft рекомендують використовувати саме таку ж умову іменування для локальних змінних та екземплярів privateзмінних. Це жахливо хибний стиль, IMO - у деяких випадках ви один жирний палець від StackOverflowExceptionвластивості sets або MyProperty = MyProperty;викликаєте ініціалізацію поля на нуль замість параметра конструктора, і навіть Microsoft продовжував використовувати m_внутрішньо більшу частину часу .
jrh

2

На публічному члені XML-документи повинні бути досить багатослівними та повноцінними, як згадував @SLaks.

Однак вони можуть бути дуже корисними і для приватних, захищених або внутрішніх членів, оскільки Visual Studio заповнить інтелігенцію та допоможе підказки з коментарями XML-документа.

Це означає що:

// describe what this does
private void DoSomething() 
{
    // or describe it here...

Це може бути цілком достатня документація, але:

/// <summary>describe what this does</summary>
private void DoSomething() 
{

Буде набагато простіше швидко побачити з інших місць вашого коду.

Як правило, про публічні коментарі XML я пишу для зовнішнього користувача API та про внутрішні коментарі XML, які я пишу для мене або інших членів своєї команди.

Пропуск описів параметрів, ймовірно, є поганою ідеєю для першої та тонкою для другої.

Я хотів би додати (в документації громадських API особливо) завжди включають чи getабо setза властивостями:

/// <summary>Gets a value indicating whether an item is selected.</summary>
public bool ItemIsSelected
{ 
    get { return SelectedItem != null; } 
}

З інтелігенції C # не очевидно, getчи setє, чи є, але розміщення його на коментарі XML означатиме, що ви можете сказати з першого погляду з підказки.


Залежить. Що робити, якщо у вас є власність, public getале internal setяк власність? Як ви це коментуєте? :-)
Гійом

1
@Guillaume, оскільки коментарі XML є загальнодоступними, я б просто задокументував getXML і задокументував їх setрегулярними //коментарями.
Кіт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.