代码注释的艺术--码农必会

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会使所有开发人员收益,尤其是在团队合作的环境中。因此大方的与同事分享这些注释的技巧,让我们都能写出易懂而且好维护的代码

时间: 2024-11-08 01:12:32

代码注释的艺术--码农必会的相关文章

android 开发中用到的工具-持续更新(码农必看)

1. vim 单文件查看修改利器(一直使用支持各种编码各种文件,各种插件),欢迎下载笔者插件 git clone https://github.com/green130181/vim-conf.git development 是开发目录,要使用的话直接进入该目录执行make install 即可 doc是个继续latex 的  文档,介绍一些插件如何使用的文档 2.Geany 不错的文件查看编辑器,有点类似UltraEdit,查看log好帮手,和vim 各有特色吧 3.git 安卓开发必备,必须

自动写代码工具要颠覆码农?(转)

摘要 : 人类总是会对自己的未来充满了焦虑,在我们对未来心存怀疑的时候,任何一则“消极”一点的消息都能让我们更加否认自己的未来,这一心理近日在对程序员前景心存质疑的人们身上,非常明显. 人类总是会对自己的未来充满了焦虑,在我们对未来心存怀疑的时候,任何一则“消极”一点的消息都能让我们更加否认自己的未来,这一心理近日在对程序员前景心存质疑的人们身上,非常明显. 日前,据网易科技报道:美国莱斯大学表示,作为五角大楼的疯狂科学部门,美国国防部先进研究计划署(DARPA)对代号为PLINY的自动填写编码

"程序员" 跟 "码农" 究竟有什么区别?

前言: IT界知名段子手,网络红人留几手曾经说:对于那些月薪两万以下,自称程序员的码农们,其实我们从来没有把他们归为我们程序员的队伍.他们虽然总是以程序员自居,只是他们的一厢情愿罢了. 此话一出,不知有多少小猴子默默地捏着工资条躲在厕所里轻轻啜泣.然而,钱的多少并不该成为分辨码农和程序员的分界线,那么码农和程序员之间的区别到底是什么呢? 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题.面试

与技术无关,但却值得码农们好好读一读的怪书:禅与摩托车维修艺术

最近在读<禅与摩托车维修艺术>这本书,说它很奇怪,其实是因为觉得书名很有意思.看书名,很容易被误解成是一本教人修摩托车的教程,事实上它是一本非常经典的哲学书籍,很多大牛都有推介过这本书. 著名的物理学家 霍金 曾这样评价这本书: “我因为写了一部人们把它和<禅与摩托车维修艺术>相比较的书而感到甚受恭维,我希望拙作(<时间简史>)和<禅与摩托车维修艺术>一样使人们觉得他们不必自处于伟大的智慧及哲学的问题之外” 其实不单单是霍金,乔布斯也曾经极力的推崇过这本书.

大量的文档,大量的示例代码,大量的开源组件,大量的社区,大量的码农

移动用各个平台的原生工具和代码,当年被Delphi忽悠,入了贼船,这次搞移动,坚定了跟着厂家走的策略.每次更新不用傻等Delphi跟进,大量的文档可以参考,大量的示例代码可以直接copy,大量的开源组件可以拿来就用,大量的社区可以做到有问必答. 如果有一天真的做大了,还有大量的iOS/Java码农可以招聘,组队团PK. 总之是选路要选对啊.这两年如果不是EMB出现救市,Delphi差点成了绝唱.想想都后怕.移动开发不敢在冒险了. 参考:http://bbs.2ccc.com/topic.asp?

十年码农,过了十年他们依旧在敲代码

摘要:话说程序员也是一个吃青春饭的职业,经常需要加班.高强度工作.新技术学习需求等等,让青春不再来的从业者感觉吃力,但仍然有一大批人因为各种原因十年如一日的敲着代码,十年历程是怎样的一种经历,你会成为其中之一吗? 十年前的2004年,中国网民突破9000万可喜可贺,第三代互动式搜索引擎搜狗刚刚问世,新浪.搜狐.网易是中国顶级的互联网企业,2004互联网大事记里看不到BAT的影子,小编在读初中,当然,也有一批很平凡的程序员在敲代码. 来看看这十几位码农十年或平凡.或漂泊的历程(以下程序员信息主要来

从菜鸟到大牛的码农升职必学文章推荐

几年前我也是一个码农菜鸟,我也常常幻想着成为技术大牛. 如何减小与"大牛"的差距是我常常不得不面对的话题.今天从我走过来的路来总结一下成为大牛的技术之路. 先来看一张程序员的时间管理图. 除了时间管理,技术学习也是少不了的.下面推荐一下比较好的技术文章. 使用瀑布流插件 Masonry 进行瀑布流布局 业余草微信公众号上线了! 使用HTML5 Canvas实现火焰风暴动画 HTML5 实现3D翻转立方体 使用 HTML5 制作像素太空战机游戏 常用的Linux关机命令大全 5个常用的L

有农民说这辈子再也不种菜了,有大龄码农这辈子还能继续写代码么?

我的博客已经快一年没没有更新过了,因为我准备“弃码从农”了,一方面自己本身还是农业户口,算是标准意义上的农民,另一方面觉得农民跟“码农”都有一个“农”字,所以觉得这算是一个“缘分”,不写代码了回去当农民应该是个不错的主意.于是一年前就开始筹划成立一个公司做农业相关项目,最后定位做一个农产品电商平台,准备采用C2C的模式,结果踩坑了,至今没有什么进展,正在踌躇之际,昨天正巧遇到到一件事情,结合最近跑政府遇到的问题,让我感叹创业之不易,民生之多艰! 事情是这样,我正在楼上写项目有关啊的方案,突然听到

码农面试必问的题,太值了

随着互联网越来越普及,尤其是经过pc向移动端的转变,中国对互联网需求呈现爆炸式的增长趋势,与之对应的便是催生出一大批的软件工程师,程序员,码农,虽然程序员曾指数级的增长,但是优秀的软件工程师依然很少,目前互联网公司之间的竞争说到底就是人才的竞争,各个互联网公司对人才的渴望也是愈加强烈,为了筛选出理想的软件工程师,可谓费尽心思,一面,二面,甚至达到五面,六面.为了帮助各位程序员能顺利通过多轮的面试,小编整理出面试过程中被问的频率最高的面试题,助你在求职过程中,顺利被录用 关于web标准和w3c的理