`

注释代码的13技巧

    博客分类:
  • java
阅读更多

 

本文发表在作者José M. Aguilar的博客Variable Not Found,后来由Timm Martin翻译成英文发表在DevTopics上。

以下是如何注释代码的13tips,它们会在日后帮助你更容易理解和维护代码。

1. Comment each level(每个级别的注释有统一的风格)

注释每一个代码块,并且在各个级别的代码块上,要使用统一的注释方法。例如:

对于类,应包含简单的描述、作者以及最近的更改日期 
对于方法,应包含目的的描述、功能、参数以及返回值

使用统一的注释规则对于一个团队是非常重要的。当然,更加推荐使用注释的约定和工具(例如,C#的XML或Java的Javadoc),它们会是注释变得更加容易。

2. Use paragraph comments(对段落注释)

将代码块分成若干完成独立功能的"段落",并在每个"段落"前添加注释,向读者说明"即将发生什么"。

// Check that all data records

// are correct

foreach (Record record in records)

{

if (rec.checkStatus()==Status.OK)

{

. . .

}

}

// Now we begin to perform

// transactions

Context ctx = new ApplicationContext();

ctx.BeginTransaction();

. . .

3. Align comments in consecutive lines(对齐注释行)

对于拥有后缀式注释的多行代码,排版注释代码,使各行注释对齐到同一列。

const MAX_ITEMS = 10; // maximum number of packets

const MASK = 0x1F; // mask bit TCP

一些开发人员使用tab来对齐注释,有些则使用空格。但是由于tab在不同的编辑器或者IDE上会有所不同,最好还是使用空格。

4. Don't insult the reader's intelligence(不要侮辱读者的智商)

不要写没用的注释,例如:

if (a == 5) // if a equals 5

counter = 0; // set the counter to zero

写这种无用的注释不但浪费你的时间,而且读者在读这种很容易理解的代码时,很容易被你的注释转移注意力,浪费了时间。

5. Be polite(要有礼貌)

不要写不礼貌的注释代码,例如"注意,愚蠢的使用者输入了一个负数",或者"修正由于最初的开发者的可怜且愚蠢的编码所造成的副作用"。这样的注释冒犯了作者,而且你并不知道谁会在将来读到这段注释--你老板、客户或者是你在注释中冒犯的那个可怜且愚蠢的开发人员。

6. Get to the point(简明扼要)

不要在注释中写的过多,不要写玩笑、诗和冗长的话。总之,注释需要简单直接。

7. Use a consistent style(风格一致)

一些人认为注释应该能让非程序员也能看懂,但是也有些人认为注释仅仅是指导程序员的。不管怎么说,像《Successful Strategies for Commenting Code》中所说,真正重要的是注释始终面向同一个读者,在这点上,应该保持一致。个人认为,我很怀疑会有非程序人员阅读代码,所以应该把阅读注释的对象定位为开发人员。

8. Use special tags for internal use(在内部使用特殊的标签)

团队中处理代码时,在程序员之间应采用一系列统一的‘标签注释'进行交流。例如,很多团队使用"TODO"来表示一段需要额外工作的代码。

int Estimate(int x, int y)

{

// TODO: implement the calculations

return 0;

}

‘标签注释'并不解释代码,而是引起主意或者传递信息。但是,使用这种方法时,务必要完成‘标签注释'传递的信息。

9. Comment code while writing it(写代码的同时,完成注释)

写代码的同时添加注释,因为此时你的思路最为清晰。如果你把注释的任务留到最后,那么你相当于经历了两次编码。"我没有时间注释""我太忙了""项目耽误了"这些往往是不写注释的理由。所以,程序员们认为,最理想的解决方法是‘写代码前先写注释'。例如:

public void ProcessOrder()

{

// Make sure the products are available

// Check that the customer is valid

// Send the order to the store

// Generate bill

}

10. Write comments as if they were for you (in fact, they are)把代码的读者想象成你自己(实际情况往往如此)

注释代码时,不仅仅要为将来可能维护你代码的人考虑,而且要考虑到读注释的可能是你。伟大的Phil Haack说过:"每当有一行代码被敲上屏幕,你都要从维护的角度审视一遍这段代码。" "As soon as a line of code is laid on the screen, you're in maintenance mode on that piece of code."(著名的话不敢不附上原句)

结果,我们自己往往是我们良好注释的受益者,或者是烂注释的受害人。

11. Update comments when you update the code(更新代码时,记得更新注释)

如果不能随着代码的更新而更新注释,那么即使再准确的注释也毫无意义。代码和注释必须同步,否则这些注释对于维护你代码的程序人员来说简直是折磨。在使用refactoring工具自动更新代码时,应尤其注意,它们会自动更新代码而不会改变注释,这些注释自然就过期了。

 

12. The golden rule of comments: readable code(可读性良好的代码是最好的注释)

对于许多程序员来说,基本的原则之一就是:让代码自己说话。有人可能会怀疑这是那些不爱写注释的程序员的借口,然而这确实是一个不争的事实。自我解释良好的代码对于编码来说大有益处,不但代码容易理解甚至使注释变得没有必要。举例来说,在我的文章《Fluid Interfaces》中展示了什么是清晰的自我解释型代码:

Calculator calc = new Calculator();

calc.Set(0);

calc.Add(10);

calc.Multiply(2);

calc.Subtract(4);

Console.WriteLine( "Result: {0}", calc.Get() );

在本例中,注释是没必要的,并且会违背tip#4 。为了使代码更加可读,应该考虑使用适当的名字(像在经典的《Ottinger's Rules》描述的),确保正确的缩进和代码风格栏线(代码风格栏线是类似于#region #endregion这类的东西吧?)。如果这一点做的不好,直接后果是,你的注释看起来就像是在为晦涩难懂的代码而道歉。

13. Share these tips with your colleagues(与你的同事share这些tips)

尽管tip#10中曾说过良好的注释会是自己从中收益,但是这些tips会使所有开发人员收益,尤其是在团队合作的环境中。因此大方的与同事分享这些注释的技巧,让我们都能写出易懂而且好维护的代码。

更多信息请查看 java进阶网 http://www.javady.com

分享到:
评论

相关推荐

    C#注释代码的13技巧

    【C#注释代码的13技巧】 在编程过程中,良好的注释习惯是至关重要的,它不仅能够提高代码的可读性,也有助于团队协作和后期维护。以下是13个关于C#代码注释的实用技巧: 1. **统一注释风格**:确保在不同级别的...

    matlab快速注释及一些使用技巧

    在 matlab 中,注释是一种非常重要的技巧,它可以帮助开发者快速理解代码的逻辑和结构。以下是 matlab 中的一些快速注释技巧和使用技巧: 1. m 文件命名技巧 在 matlab 中,m 文件的命名非常重要。应该避免使用...

    java初学者完整代码+注释13

    这个名为“java初学者完整代码+注释13”的资源集包含了21个课程,涵盖了Java的基础知识,旨在帮助初学者逐步掌握编程技能。在这个压缩包中,我们可以看到一个名为"day13"的子文件夹,这可能代表第13天的学习内容或...

    html代码优化原理与技巧

    下面将详细讲解HTML代码优化的原理与技巧。 一、HTML结构优化 1. **语义化标签**:使用如, , , , , 等语义化的标签,有助于搜索引擎理解页面内容,提高SEO效果。 2. **简化DOM树**:避免过多嵌套和不必要的标签,...

    java初学者完整代码+注释16

    【Java初学者完整代码+注释16】这个资源针对的是正在学习Java编程语言的初学者,提供了21个课程的代码示例和详细的注释,旨在帮助他们扎实地掌握Java的基础知识。在这个系列中,我们可以学到许多重要的编程概念和...

    最佳JS代码编写技巧.pdf

    11. **注释与代码格式化**:良好的代码注释和统一的代码格式可以使代码更易理解和维护。 12. **模块化**:使用模块系统(如CommonJS、AMD或ES6模块)组织代码,提高复用性和可维护性。 13. **避免修改原对象**:尽...

    Excel使用技巧大全(超全)

    - **技巧要点**:使用VBA代码或自定义格式来限制复制隐藏单元格。 - **应用场景**:数据安全性要求较高。 44. **制作个性单元格** - **技巧要点**:通过自定义单元格格式和样式来制作独特的单元格。 - **应用...

    IntelliJ IDEA常用技巧

    用 Ctrl-/与 Ctrl-Shift-/ 来注释/反注释代码行与代码块。 7. 查看方法声明 按 Alt-Q(View|Context Info)可以不需要移动代码就能查看当前方法的声明。连续按两次会显示当前所编辑的类名。 8. 创建类的副本 ...

    JAVA开发之学习代码技巧基础.pdf

    1. **良好的编程规范**:遵循Java编程规范,如命名规则(类名首字母大写,变量名小写等),使用有意义的标识符,保持代码整洁,注释清晰。这不仅有利于团队合作,也有助于自我理解和维护。 2. **异常处理**:正确...

    Java软件开发代码规范及技巧速查手册

    8. **注释**:清晰、简洁的注释有助于他人理解代码,应包含方法的目的、参数和返回值的解释。 9. **空格和缩进**:使用标准的空格和缩进来增强代码的可读性,通常每级缩进为4个空格。 10. **避免魔法数字**:将常...

    VB技巧使用100个TIP

    17. **代码注释**:养成良好的注释习惯,使得代码易于理解。 18. **版本控制**:学习使用Git或其他版本控制系统管理代码,便于团队协作和版本回溯。 19. **代码重构**:了解重构的重要性,学会如何改进代码结构而...

    Matlab-编程技巧.docx

    13. 历史记录技巧 在命令窗口中,上下光标键可以将历史记录中的命令复制到输入位置,便于快速重新执行。 14._Tab 补全技巧 Tab 键可以补全命令名,例如输入开头的几个字母,然后按 Tab 键,当只有一个以这些字母...

    source insight 使用技巧总结

    13. **代码分析**: Source Insight的“Cross References”功能可以显示函数或变量的调用关系,帮助理解代码间的依赖。 14. **自定义热键**: 可以根据个人习惯自定义快捷键,提高操作速度。在“Tools”菜单的...

    delphi7技巧大全

    13. **代码重构**:遵循面向对象原则,进行模块化设计,提高代码可读性和可维护性。适时进行代码重构,使结构更清晰,减少冗余。 14. **版本控制**:使用Git或SVN等版本控制系统管理代码,便于团队协作和历史版本...

    c_c++技巧集(一些编程常用技巧)

    15. **代码风格和注释**:保持一致的代码风格,编写清晰的注释,有助于团队合作和代码的长期维护。 以上技巧涵盖了C和C++编程的多个方面,熟练掌握它们将使你成为更高效的开发者。在实践中不断探索和学习,你将能够...

    asp开发经验技巧宝典—软件工程师典藏13

    这本“asp开发经验技巧宝典—软件工程师典藏13”显然是为那些寻求提升ASP开发技能的软件工程师准备的宝贵资源。在ASP技术、编程经验、开发技巧以及编程宝典这些标签中,我们可以提炼出以下几个关键知识点: 1. **...

    提升java代码简洁度的几个小技巧

    以下是一些提升Java代码简洁度的小技巧: 1. 使用有意义的变量名:变量名应清晰地反映其用途,避免使用过于简写或模糊不清的名称。例如,`int count = list.size();` 比 `int i = l.s();` 更易于理解。 2. 避免...

    Vs2008技巧收集

    - **使用技巧**: 使用`Ctrl + K, F`格式化C#代码,`Ctrl + K, D`格式化ASPX代码。 **13. 创建矩形选区** - **操作方法**: - 按住`Alt`键,拖动鼠标。 - 按住`Shift + Alt`,点击矩形的左上角和右下角。 - **...

    c语言编程技巧 编程技巧

    使用有意义的变量名,添加注释以解释代码的功能和逻辑。 13. **性能优化**:理解C语言的性能特性,如循环展开、内联函数、常量折叠等,可以在必要时进行性能优化。 14. **文件操作**:学习如何使用`fopen()`、`...

Global site tag (gtag.js) - Google Analytics