我什么时候应该在我的代码中添加注释?

ong*_*oso 25 comments coding-style

  • 当我写作的时候?
  • 我完成一部分后(Single class/function/if-elses)?
  • 在我完成整个工作之后?

Ber*_*t F 26

简短的回答

简短的回答是任何时候相对于阅读它的东西是不明显的.如果它的代码仍在不断变化,那么你就是唯一的消费者,只需为你评论(小时和天).准备办理登机手续以便其他人试用 - 为您和您的团队提供意见(数天和数周,可能是数月).准备广泛发布 - 对即时和未来公众(月和年)的评论.您必须将注释视为工具,而不是文档.

答案很长:

  • 当我写作的时候? - Yes
  • 我完成一部分后(Single class/function/if-elses)? - Yes
  • 在我完成整个工作之后? - Yes

当我写作的时候? - 是的

当你到达代码没有立即清除的地方时,随时删除评论.例如,在类名不清楚或可能解释得过于广泛时描述类.另一个例子是,如果我要编写一个非显而易见的代码块,我将首先添加一条注释,提醒我我想要/需要什么.或者,如果我只是添加了一些代码,我立即意识到那里有一个问题,请发表评论以提醒自己.这些评论是实现者评论,不是为了帮助未来的维护者,而是为了帮助自己编写代码.

随时随地删除FIXME - explanationTODO explanations提醒.

代码仍在不断变化,所以我还没有记录每一个方法和参数.

我完成一部分后(Single class/function/if-elses)? - Yes

当我合理地完成一个方法或类时,现在是时候审查它了.除了检查方法范围,排序方法和其他代码清理以提高可理解性之外,现在是时候开始根据团队标准对其进行标准化.根据将要发布的受众群体考虑需要哪些评论(未来您也是受众群体的一部分!)该类是否有标题块?是否存在不应该调用此方法的非显而易见的条件?此参数是否有任何条件,例如不应为null?

检查FIXMETODO项目 - 仍然有效?在继续之前你应该解决的任何问题?

这些仍然是您和您的团队的注意事项,但是未来维护人员的标准化笔记的开头.

在我完成整个工作之后? - Yes

现在是时候审查所有内容并根据您的标准最终确定评论.

所有FIXMETODO项目都已解决(修复或捕获为已知问题)?

这些说明现在适用于未来的维护者.

现在肮脏的小秘密

更多并不总是更好.单元测试一样,您必须平衡工具的使用权衡成本与收益.事实上,编码器每小时只能输入这么多物理线路 - 应该注释多少百分比?较低的百分比意味着我有很多代码,但它令人困惑,难以理解和正确使用.较高的百分比意味着,在某人更改方法签名或重新定义界面的一小时内,所有时间都花在完全评论那些被破坏的方法的每个参数上.

根据代码的稳定性,生存时间以及发布的广泛程度找到合适的百分比.还不稳定 - 最少的评论可以帮助您和您的团队.稳定并为项目做好准备 - 完全评论.公开发布? - 完全评论(再次检查!)版权(如果适用).获得经验后,调整百分比.

  • @Bert:也就是说,注释仍然无法捕获代码的所有功能; 算法是O(1),O(n)还是O(n²)在实践中确实很重要,它们不是"正确"特征,而是"质量"特征.评论很好,因为它们打算供其他程序员(或者你自己在6个月内使用)---)因此可以在任何最有意义的水平上工作. (2认同)

小智 12

你永远不应该"添加"评论 - 它们不是补充.注释是代码的一部分 - 您可以在需要时使用它们.询问何时应该添加它们就像询问何时应该添加函数或类一样.考虑到这一点,我记得在大学里做了一个项目建议,我曾为其中一名学生带来了大约1000行Pascal,没有任何功能.当我询问他为什么没有使用函数时,他的回答是"我将在以后添加它们,一旦我使用了它."

  • @ongoso实际上,撰写评论可能会导致您重构该程序.如果这些评论值得一试,那么它们会让你更深入地思考你在做什么. (2认同)
  • +1:我和@Neil在一起:写代码时写评论.在编写第一批代码时写下第一条评论.修改代码时修改注释.当你点缀i并且越过代码的t时,将我的点和你的注释的t点交叉.由于很好的理由,注释在源文件文本而不是外部文档中,它们是不可或缺的. (2认同)

Sur*_*ine 9

这是主观的,但有时最好在实际代码之前添加它们,例如.当您实现具有明确定义的步骤的算法时.通过这种方式,很难错过步骤.


Eli*_*sky 5

这是一种风格问题.就个人而言,我喜欢在编码期间写评论,而不是之后.因为我把它留给以后,我通常会变得懒惰而根本不写它们.也就是说,有时候查看完成的代码是很有用的,找出代码本身不明显的内容并记录下来.特别是,做出假设的部分.