论坛首页 综合技术论坛

你写注释吗?

浏览 14011 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (1) :: 隐藏帖 (24)
作者 正文
   发表时间:2009-05-06  
1、注释(包括 Javadoc)是代码的重要组成部分!为什么?因为代码是给人看的,不是给机器看的。

2、非 Javadoc 部分出现大段注释的话,说明作者非常脑残。把代码写清楚点会死啊。

3、非 Javadoc 注释稍微点缀一下即可。比如 double RATE = 0.2,加个注释说明一下为什么是这个值,不然的话过半年作者自己都会不记得了。

0 请登录后投票
   发表时间:2009-05-06  
yiding_he 写道
1、注释(包括 Javadoc)是代码的重要组成部分!为什么?因为代码是给人看的,不是给机器看的。

2、非 Javadoc 部分出现大段注释的话,说明作者非常脑残。把代码写清楚点会死啊。

3、非 Javadoc 注释稍微点缀一下即可。比如 double RATE = 0.2,加个注释说明一下为什么是这个值,不然的话过半年作者自己都会不记得了。


老实说“ double RATE = 0.2”如果不是公用变量。而是随便在方法中这么写,我是要骂人的。
而且这个RATE是什么的RATE?不能多写几个字母写清楚嘛。难道非要加注释?
0 请登录后投票
   发表时间:2009-05-06  
黑暗浪子 写道
yiding_he 写道
1、注释(包括 Javadoc)是代码的重要组成部分!为什么?因为代码是给人看的,不是给机器看的。

2、非 Javadoc 部分出现大段注释的话,说明作者非常脑残。把代码写清楚点会死啊。

3、非 Javadoc 注释稍微点缀一下即可。比如 double RATE = 0.2,加个注释说明一下为什么是这个值,不然的话过半年作者自己都会不记得了。


老实说“ double RATE = 0.2”如果不是公用变量。而是随便在方法中这么写,我是要骂人的。
而且这个RATE是什么的RATE?不能多写几个字母写清楚嘛。难道非要加注释?

多写几个也未必有用啊,难道要你写 RESERVE_FOR_BETTER_PERFORMANCE_AND_CAN_BE_INCREASED_IF_NEEDED?
0 请登录后投票
   发表时间:2009-05-07  
yiding_he 写道
黑暗浪子 写道
yiding_he 写道
1、注释(包括 Javadoc)是代码的重要组成部分!为什么?因为代码是给人看的,不是给机器看的。

2、非 Javadoc 部分出现大段注释的话,说明作者非常脑残。把代码写清楚点会死啊。

3、非 Javadoc 注释稍微点缀一下即可。比如 double RATE = 0.2,加个注释说明一下为什么是这个值,不然的话过半年作者自己都会不记得了。


老实说“ double RATE = 0.2”如果不是公用变量。而是随便在方法中这么写,我是要骂人的。
而且这个RATE是什么的RATE?不能多写几个字母写清楚嘛。难道非要加注释?

多写几个也未必有用啊,难道要你写 RESERVE_FOR_BETTER_PERFORMANCE_AND_CAN_BE_INCREASED_IF_NEEDED?

多写几个肯定很用,但像你写的肯定没用。首先要符合一定语法结构,变量一定是个名词,那在名词前面我们可以加什么词?还有你这个例子直接写成TUNING就行了,需要写这么长吗?还需要写注释吗?
而这个rate则让人不知道是派什么用的rate
0 请登录后投票
   发表时间:2009-05-07  
Whatever they say, they say.

注释是对一个接口的说明,也就是说可以充当部分“契约”

如果我们不写注释
   1. 仅凭方法名和参数名未必能猜到详尽的契约。比如哪些参数Nullabe,这个API在整个框架中的作用等等。有个典型的例子就是java.util.Set。它有个约定就是它的元素应该实现hashCode()方法和equals()方法,Set将基于这两个方法来比较两个元素是否相等。

   2. 有人说看看代码细节也能明白方法的契约。但我只是要调用一个接口,我把你当一个黑盒,凭什么要求我花时间去看你的代码实现?



黑暗浪子 写道
最好的注释是代码,印象中是uncle Bob说的。
但是好像kent beck说最好的文档是代码。
所以,嘿嘿。
写代码这事情不能细说啊~

0 请登录后投票
   发表时间:2009-05-07  
恰恰相反,自然语言的表达能力比JAVA语言的表义能力强得多。看到一个JAVA方法名,我们可能要猜它的意义;但看到一条英语句子,我们就会很明确了。 举个例子,在apache的StringUtils类中,如果你不看注释,你知道defaultString()是什么意思吗?你能百分百确定 isEmpty()和 isBlank()的区别吗? 除了空格和制表符算一种“Blank”,回车换行算不算"Blank"呢?

ozzzzzz 写道
黑暗浪子 写道
最好的注释是代码,印象中是uncle Bob说的。
但是好像kent beck说最好的文档是代码。
所以,嘿嘿。
写代码这事情不能细说啊~

文字的东西很不可靠,因为无法测试,无法验证。是否同步就显得很不好验证。
比如你写了个注释,别人在这之后修改了代码,但是注释忘记了。测试也通过了,运行和部署都没有问题。但是过了之后,忽然出现了bug,你跟着注释一看,这块不应该有问题,放过的机会非常大。
而且我这个人私下认为,一个人写不好代码,希望他们写的注释和文档要能好,也是有点奢望。反正我见到的主要是能写好代码的,也能写好注释和文档,只不过他们不愿意写。
另外一个更加麻烦的事情是,以后SCM工具和CASE之类的东西,往往喜欢在注释里面添加点什么,而有的部署工具也喜欢在代码里面填东西。遇到这种情况十分难以控制最终究竟会发生什么问题。
同时你还会发现,自然文字的东西往往有多义性,特别是别人看的时候,产生错误理解的可能性很大。如果那个人刚好是一个跟上面这些不喜欢动脑筋,也不喜欢查资料的人所类似,那么后果就十分的不能被控制。
所以我十分反感在完成的代码中出现人手工写的和维护的注释。今天我再次重复一遍,但愿这个是最后一次了。

0 请登录后投票
   发表时间:2009-05-07   最后修改:2009-05-07
chenjianjx 写道
恰恰相反,自然语言的表达能力比JAVA语言的表义能力强得多。看到一个JAVA方法名,我们可能要猜它的意义;但看到一条英语句子,我们就会很明确了。 举个例子,在apache的StringUtils类中,如果你不看注释,你知道defaultString()是什么意思吗?你能百分百确定 isEmpty()和 isBlank()的区别吗? 除了空格和制表符算一种“Blank”,回车换行算不算"Blank"呢?

看测试。
所以说“源代码是最好的文档”还不全面,应该是“源代码及其测试是最好的文档”。
0 请登录后投票
   发表时间:2009-05-07  
chenjianjx 写道
Whatever they say, they say.

注释是对一个接口的说明,也就是说可以充当部分“契约”

如果我们不写注释
   1. 仅凭方法名和参数名未必能猜到详尽的契约。比如哪些参数Nullabe,这个API在整个框架中的作用等等。有个典型的例子就是java.util.Set。它有个约定就是它的元素应该实现hashCode()方法和equals()方法,Set将基于这两个方法来比较两个元素是否相等。

   2. 有人说看看代码细节也能明白方法的契约。但我只是要调用一个接口,我把你当一个黑盒,凭什么要求我花时间去看你的代码实现?



黑暗浪子 写道
最好的注释是代码,印象中是uncle Bob说的。
但是好像kent beck说最好的文档是代码。
所以,嘿嘿。
写代码这事情不能细说啊~


说到底你就是不想看代码。如果看代码,你的1根本不是问题。而2就说明了为什么你有1这个说法的原因。
个人认为如果是开发人员看代码肯定要比看注释更能理解整体。不过国内很多代码都比较混乱,因此造成用注释来补充说明的举动。
所以不写注释的前提就是写出简洁,高效,规范的优秀代码。脱离这个前提,不写注释当然是不可能的。
0 请登录后投票
   发表时间:2009-05-07  
daquan198163 写道
chenjianjx 写道
恰恰相反,自然语言的表达能力比JAVA语言的表义能力强得多。看到一个JAVA方法名,我们可能要猜它的意义;但看到一条英语句子,我们就会很明确了。 举个例子,在apache的StringUtils类中,如果你不看注释,你知道defaultString()是什么意思吗?你能百分百确定 isEmpty()和 isBlank()的区别吗? 除了空格和制表符算一种“Blank”,回车换行算不算"Blank"呢?

看测试。
所以说“源代码是最好的文档”还不全面,应该是“源代码及其测试是最好的文档”。

测试代码不是代码吗?
说道最后还是说明“源代码是最好的文档”这句话。
不过我个人对这句话持保留意见。
0 请登录后投票
   发表时间:2009-05-07  
chenjianjx 写道
恰恰相反,自然语言的表达能力比JAVA语言的表义能力强得多。看到一个JAVA方法名,我们可能要猜它的意义;但看到一条英语句子,我们就会很明确了。 举个例子,在apache的StringUtils类中,如果你不看注释,你知道defaultString()是什么意思吗?你能百分百确定 isEmpty()和 isBlank()的区别吗? 除了空格和制表符算一种“Blank”,回车换行算不算"Blank"呢?

ozzzzzz 写道
黑暗浪子 写道
最好的注释是代码,印象中是uncle Bob说的。
但是好像kent beck说最好的文档是代码。
所以,嘿嘿。
写代码这事情不能细说啊~

文字的东西很不可靠,因为无法测试,无法验证。是否同步就显得很不好验证。
比如你写了个注释,别人在这之后修改了代码,但是注释忘记了。测试也通过了,运行和部署都没有问题。但是过了之后,忽然出现了bug,你跟着注释一看,这块不应该有问题,放过的机会非常大。
而且我这个人私下认为,一个人写不好代码,希望他们写的注释和文档要能好,也是有点奢望。反正我见到的主要是能写好代码的,也能写好注释和文档,只不过他们不愿意写。
另外一个更加麻烦的事情是,以后SCM工具和CASE之类的东西,往往喜欢在注释里面添加点什么,而有的部署工具也喜欢在代码里面填东西。遇到这种情况十分难以控制最终究竟会发生什么问题。
同时你还会发现,自然文字的东西往往有多义性,特别是别人看的时候,产生错误理解的可能性很大。如果那个人刚好是一个跟上面这些不喜欢动脑筋,也不喜欢查资料的人所类似,那么后果就十分的不能被控制。
所以我十分反感在完成的代码中出现人手工写的和维护的注释。今天我再次重复一遍,但愿这个是最后一次了。


最近在看《clean code》,uncleBOB说“写代码的最高境界就是把代码写成一篇让人可以阅读的英语小文。”所以说应该是看到一个JAVA方法就像看到一段英语段落。而一个class就是一篇由几个段落组合而成的article。
而不是仅仅看方法名,有谁能看一篇文章的title就能知道这文章具体说什么吗?
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics