使用XML注释记录C#代码的最佳实践是什么?

Est*_*aya 36 c# ndoc code-documentation

我正在编写一些我刚编写的新代码,并将NDoc sytle注释添加到我的类和方法中.我希望生成一个非常好的MSDN样式文档供参考.

一般来说,在为类和方法编写注释时,有哪些好的指导原则?NDoc评论应该说什么?他们应该怎么说?

我发现自己正在研究.NET框架评论所说的内容,但这种情况会变得很快; 如果我能有一些好的规则来指导自己,我可以更快地完成我的文档.

Jef*_*nal 54

在用于构建API文档的注释中,您应该:

  • 解释方法或属性的作用,为什么存在,并解释任何对代码的普通使用者不言自明的域概念.

  • 列出参数的所有前提条件(不能为空,必须在一定范围内等)

  • 列出可能影响调用者处理返回值的任何后置条件.

  • 列出方法可能抛出的任何异常(以及在什么情况下).

  • 如果存在类似的方法,请解释它们之间的差异.

  • 注意任何意外的事情(例如修改全局状态).

  • 列举任何副作用,如果有的话.


Caf*_*eek 17

如果您最终得到的评论不会增加任何价值,那么它们就是浪费.

例如

/// <summary>
/// Gets manager approval for an action
/// </summary>
/// <param name="action">An action object to get approval for</param>
public void GetManagerApprovalFor(Action action)
Run Code Online (Sandbox Code Playgroud)

...你绝对没有添加任何价值,只是添加了更多代码来维护.

很多代码都充斥着这些多余的评论.

  • 是的,我理解评论不能提供任何价值.这就是为什么我正在寻找能够提供价值的评论指南. (8认同)
  • 虽然我同意你关于超级评论的话题,但是超级丰富的文档是另一回事.在某些情况下,你可能只是没有任何额外的文档,你的xml doc字符串只是方法名称的回声,但是我仍然添加了docsctring - 部分是因为它确认了方法就像它看起来那么简单(而不是比不打扰记录方法的人,但主要是因为它看起来**错误**如果它丢失了. (4认同)
  • 我希望我能100次回答这个问题.我认为这些评论与我将UnitTest相同,后者被硬编码以始终成功.您已成功检查了"我有评论"(或"我有单元测试")框,但完全无法以任何方式使代码更易于维护,稳定或更好. (4认同)
  • 我认为这更像是一个不良文档的例子,而不是一个不应该使用它的例子.公共方法应该有其他文档,例如预期的异常,前置条件等.例如,当action为null时,该方法会执行什么操作? (2认同)

Nie*_*est 6

StyleCop提供代码注释样式的提示.它提供的建议符合MSDN文档样式.

至于评论的内容,它应该为您的代码的用户提供足够的信息,说明期望的行为类型.它还应该回答用户可能遇到的潜在问题.因此,尝试将您的代码用作对代码一无所知的人,或者甚至更好,请其他人这样做.


Mat*_*eer 5

对于属性,您的注释应指示属性是只读,只写还是读写.如果你查看所有正式的MS文档,属性文档注释总是以"获取...","获取或设置..."开头,并且(很少,通常避免只写属性)"设置......"

  • 我认真对待doc评论而且我不为Microsoft工作.在良好的文档评论,GhostDoc和Sandcastle/Sandcastle帮助文件构建器之间,我们的核心库有一个网站开发人员可以参考.我真的**不喜欢通过逐步执行代码而不是阅读简洁的doc来直观地使用方法/属性. (3认同)

Pav*_*sky 5

不要忘记什么是有效的XML.例如:

/// <Summary>
/// Triggers an event if number of users > 1000
/// </Summary>
Run Code Online (Sandbox Code Playgroud)

(错误:XML无效).