C#编程中的XML注释技巧

15

早上好,下午好,晚上好或晚安(根据您所在的时区而定)。

这只是关于C#中XML注释的一般性问题。我从来没有非常重视对我的程序进行注释,我通常更喜欢用冗长的变量/属性/方法名称让代码自己说明。如果我编写的某些内容相当混乱,我会写注释,但大多数情况下我不写很多注释。

我正在阅读有关.NET、Sandcastle和CodePlex上的帮助文件生成器中XML注释的内容,这使我想要记录我的代码并为那些需要深入研究我的代码的人生成一些好的、有用的文档。

我的问题是关于标准和惯例。是否有“好”的XML注释指南?您应该注释每个变量和属性吗?每个方法?我只是想寻求如何撰写良好注释的提示,以便Sandcastle将其编译成好的文档,这样其他程序员在不得不处理我的代码时就不会咒骂我的名字。

提前感谢您的建议和建议, Scott Vercuski

6个回答

10

个人而言,我们确保每个公共和受保护的方法都有XML注释。这将为您提供Intellisense,而不仅仅是最终用户帮助文档。过去,我们还在私有作用域声明中包含它,但只要方法简短且精准,我们就认为它不是必需的。

不要忘记,有一些工具可以让你更轻松地完成XML注释任务:

  • GhostDoc - 注释继承和模板插件。
  • Sandcastle Help File Builder - 通过GUI编辑Sandcastle项目,可以从命令行运行(用于构建自动化),并可以编辑MAML,以获取不从代码派生的帮助主题。(1.8.0.0 alpha版本非常稳定且功能大幅改进,我们已经使用了一个月以上,比1.7.0.0更好用)

6

评论经常过时是一个问题。我的经验法则是:您需要更新评论的工作量越大,该评论就会越快过时。

XML注释非常适用于API开发。它们与Intellisens配合得很好,可以让您在短时间内生成HTML帮助文档。

但这并不是免费的:维护它们将很困难(看看任何非平凡的例子,你就会明白我说的是什么),所以它们很快就会过时。因此,检查XML注释应该被添加到您的代码审查中作为强制性检查,并且每次更新文件时都应该执行此检查。

由于维护成本高昂,在非API开发中,许多非私有符号仅由1或2个类使用,并且这些符号通常是自说明的,因此我永远不会强制执行规则,即每个非私有符号都应该进行XML注释。 这将是过度和低效的。您将得到我在很多地方看到的东西:几乎为空的XML注释不会为符号名称增添任何内容。而且代码稍微难读一点...

我认为普通(非API)代码中关于注释的非常、非常重要的指南不应该是关于如何编写,而是关于它们应该包含什么。许多开发人员仍然不知道什么需要写。对应该注释的内容进行描述,并提供示例,将为您的代码做得更好,而不仅仅是简单的“在每个非私有符号上使用XML注释”。


3

我记录公共类和这些类的公共/受保护成员。

我不记录私有或内部成员或内部类。因此,变量(我认为你指的是字段)因为它们是私有的。

目标是为那些没有即时访问源代码的开发人员创建一些文档。

尽量提供一些使用不明显的示例。


2

我很少评论方法变量,同样也很少评论字段(因为它们通常由属性覆盖,或者如果使用自动实现的属性,则根本不存在)。

通常,我会努力为所有公共/受保护成员添加有意义的注释,这非常方便,因为如果在构建期间打开xml注释,则会自动警告缺少注释。根据复杂性,我可能不会填写每个细节 - 例如,如果每个参数必须执行什么操作是100%明显的(即没有特殊逻辑,并且只有一种逻辑方法解释变量),那么我可能会懒得不添加关于参数的注释。

但是我肯定会描述方法、类型、属性等表示/执行的内容。


0
我们会记录我们库中的公共方法/属性等。在构建过程中,我们使用 NDoc 创建类似 MSDN 的 Web 引用。这对于快速参考和查找非常有帮助。
特别是对于新团队成员或者像你说的原作者已经离开的情况下,它也非常适合智能感知。
我同意代码本身应该是自解释的。对我来说,XML 文档更多的是关于当你没有源代码时的参考和查找。

0

就我个人而言,我的建议是尽量避免注释。注释是危险的。因为在工业界中,我们总是更新代码(因为业务和需求总是在变化),但很少更新我们的注释。这可能会误导程序员。


看起来可能需要更多的工作,但是注释可以提高代码的理解性,更新代码和注释应该是你的工作的一部分。 - Jonathan Websdale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接