Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么我不建议你写注释?

为什么我不建议你写注释?

作者头像
用户7386338
发布于 2020-05-29 07:21:15
发布于 2020-05-29 07:21:15
1.4K00
代码可运行
举报
文章被收录于专栏:Java患者Java患者
运行总次数:0
代码可运行

前言

实际上,注释最多也就是一种必须的恶。若编程语言足够有表达力,或者我们擅长于用这些语言来表达意图,就不那么需要注释了,甚至也许根本不需要。 注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败,我用了失败一词,其实是说真的。注释总是一种失败,是因为我们无法找到不用注释就能表达这段代码含义的方法。 如果你发现你的代码需要写注释,那么你就应该想想是不是有办法翻盘,用代码来表达。并不是不让你真的不用注释,而是有些时候,用注释是因为我们怕其他的开发者在我们的代码的时候,看不懂我们的代码从而去加注释,那么我们为什么不写出其他开发者一目了然的代码呢?

为什么不建议写注释?

为什么我们极力贬低注释?因为注释跟代码一样,注释会撒谎,但这并不是我们有意的写一些撒谎的注释。我们可以想象一个项目如果做了一年两年三年,代码的业务逻辑永远都不会改变吗?不可能……. 注释存在的时间越久,就离其所之前描述的代码越远,越来越久就会变得全然错误。为什么呢?因为程序员不能坚持维护注释。 代码在变动,在演化。从这里移到那里。彼此分离、重构又合到一起,而注释却不一定就会随着代码的移动重构而移动重构,慢慢的,业务逻辑改了,注释则会与代码分隔,时间很长了就不准确了。所以,只有代码,代码才能确定的告诉你,它做了什么事,代码才是唯一的信息来源。所以,尽管有时候也需要注释,我们也该多花心思尽量减少注释量。

注释美化代码?

写注释的常见动机之一是因为糟糕代码的存在,我们编写一个方法,写完之后发现这个方法内容乱七八糟,这个时候我们可能会告诉自己,在上面写点注释!但是错了,最好的方法是让代码变得干净! 带有少量注释的整洁而有表达力的代码,比带有大量注释的零碎而又复杂的代码像样的多,与其花时间编写解释你写的代码的注释,倒不如花时间清洁你那堆糟糕的代码。

如何用代码来阐述?

你愿意看到这个?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// check to see if the employee is eligible for full benefits 
if ((employee.flag & HOUTLY_FLAG) && employee.age > 65) {

}

还是愿意看到这个?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (employee.isEligibleForFullBenefits()) {
}

能用代码解释你的意图,就不用去写注释,很多时候我们只需要想上几秒钟,简单到只需要创建一个描述与注释表达出同一事物的函数即可。 有些注释是必须的也是有利的,不过,唯一真正好的注释是你想办法去把你想表达的事物用代码表达出来。 然而有些时候,一些废话的注释我们不要去写 比如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {

   // Default constructor
    public Demo () {

    }


}

甚至

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
*Return the day of the month
**/
pubilc int getDayOfMonth () {

}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何写出让同事好维护的代码?
写出整洁的代码,是每个程序员的追求。《clean code》指出,要想写出好的代码,首先得知道什么是肮脏代码、什么是整洁代码;然后通过大量的刻意练习,才能真正写出整洁的代码。
Java技术栈
2019/10/24
4900
什么是整洁的代码
来源 | https://www.cnblogs.com/xybaby/p/11335829.html
五分钟学算法
2019/08/20
5590
什么是整洁的代码
屎一样的代码命名,心态崩了。。。
大家好,我是 Guide。这篇文章是我对几年前写的一篇文章的完善,主要讲了命名规范的一些基础知识。希望对大家有帮助!
Guide哥
2021/12/21
7180
屎一样的代码命名,心态崩了。。。
2022-10-15-整洁代码的注释与格式
认为写注释就表示一种失败,因为你的代码让人不明白,才需要注释,某种程度上来说也不无道理。
三流之路
2022/10/25
2580
代码注释的艺术,优秀代码真的不需要注释吗?
前天回家路上,有辆车强行插到前面的空位,司机大哥暴躁地拍着方向盘吐槽道“加塞最可恶了”,我问“还有更可恶的吗”,司机大哥淡定说道“不让自己加塞的”。似乎和我们很类似,我们程序员届也有这 2 件相辅相成的事:最讨厌别人不写注释,更讨厌让自己写注释。
从大数据到人工智能
2022/09/08
6380
《代码整洁之道》读书笔记
我在短暂的工作经历中(4 个月),犯下过不少错,少部分是因为经验,但大部分的情况下都是因为对代码没有足够的敬畏之心导致的,并且在工作中也遇到过一些很有意思的代码,所以今天就着这本《代码整洁之道》,来谈一谈对于代码的感受和一些想法。(Ps:想吐槽一下这本书挺魔怔的..)
Java3y
2019/09/18
3950
《代码整洁之道》
写整洁代码,需要遵循大量的小技巧,贯彻刻苦习得的“整洁感”。这种“代码感”就是关键所在。有些人生而有之。有些人费点劲才能得到。它不仅让我们看到代码的优劣,还予我们以借戒规之力化劣为优的攻略。
Yano_nankai
2018/10/08
9290
《代码整洁之道》笔记(4-6章节)
个人认为注释还是要写,算是对代码的中文翻译,因为我们的英语水平,命名习惯各不相同。
Yuyy
2022/06/28
1880
5分钟了解《代码整洁之道》精华
版权声明:转载前请留言获得作者许可,转载后标明作者 张拭心 与 原文链接。大家都是成年人,创作不易,感谢您的支持! https://blog.csdn.net/u011240877/article/details/87967637
张拭心 shixinzhang
2019/05/27
7780
一个简单需求竟让我改了十几处代码,万字控诉到底什么是重复代码!
刚开始工作时,总有人开玩笑说,编程实际上就是 CV,调侃很多程序员写程序依靠的是复制粘贴。
JavaEdge
2021/12/07
2250
你写注释吗?写你就输了
我并不是提倡不写代码注释,只是建议不要过于依赖注释,这样可以使代码更干净、更有表现力,这也能提高开发人员的水平。我自己也在寻求编写更简洁的代码,我尽力不编写糟糕的注释,并在可能时重构代码。
深度学习与Python
2020/07/30
5280
你写注释吗?写你就输了
优秀程序员眼中的整洁代码
有多少程序员,就有多少定义。所以我只询问了一些非常知名且经验丰富的程序员。 Bjarne Stroustrup,C++ 语言发明者,C++ Programming Language(中译版《C++ 程
非著名程序员
2018/02/09
6680
优秀程序员眼中的整洁代码
写让别人能读懂的代码
写让别人能读懂的代码 随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本。而新功能的开发又常常依赖于旧代码,阅读旧代码所花费的时间几乎要大于写新功能的代码。 我前几天看了一本书,书中有这么一句话: “复杂的代码往往都是新手所写,只有经验老道的高手才能写出简单,富有表现力的代码” 此话虽然说的有点夸张,可是也说明了经验的重要性。 我们所写的代码除了让机器执行外,还需要别人来阅读。所以我们要: 写让别人能读懂的代码 写可扩展的代码 写可测试的代码(代码应该具备可测试性,对没
用户1289394
2018/02/27
9400
写让别人能读懂的代码
代码整洁之道【笔记】
一、整洁代码 A.混乱的代价 1.有些团队在项目初期进展迅速,但有那么一两年的时间却慢去蜗行。对代码的每次修改都影响到其他两三处代码 2.花时间保持代码整洁不但有关效率,还有关生存 3.程序员遵从不了解混乱风险经理的意愿,也是不专业的做法 4.Bjarne Stroustrup,C++发明者:我喜欢优雅和高效的代码。代码逻辑应该直接了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。 5.Grady Booch,《面向分析与设计》:整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直接了当的控制语句。 6.Dave Thomas,OTI公司创始人:整洁的代码应可由作者之外的开发者阅读和增补。它应有单元测试和验收测试。它使用有意义的命名。它只提供一种而非多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的API。代码应通过其字面表达含义,因为不同的语言导致并非所有必须信息均可通过代码自身清晰表达。 7.Michael Feathers,《修改代码的艺术》:我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的。整洁的代码总是看起来像是某位特别在意它的人写的。几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码——全心投入的某人留下的代码。 8.Ron Jeffries,《极限编程实施》:简单代码,依其重要顺序:能通过所有测试;没有重复代码;体现系统中的全部设计理念;包括尽量少的实体,比如类、方法、函数等 9.Ward Cunningham,Wiki发明者:如果每个例程都让你感到深合已意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。 B.思想流派 1.读与写花费时间的比例起过10:1 C.童子军军规 1.“让营地比你来时更干净” 2.如果每次签入时,代码都比签出时干净,那么代码就不会腐坏 二、有意义的命名 A.名副其实 1.变量、函数或类的名称应该已经答复了所有的大问题,如果名称需要注释来补充,那就不算名副其实 2.代码的模糊度:即上下文在代码中未被明确体现的程度 B.避免误导 1.程序员必须避免留下掩藏代码本意的错误线索。应当避免使用与本意相悖的词 2.以同样的方式拼写出同样的概念才是信息,拼写前后不一致就是误导 3.要注意使用小写字母i和大写字母O作为变量名,看起来像“壹”和“零” C.做有意义的区分 1.同一作用范围内两样不同的东西不能重名,如果名称必须相异,那其意思也应该不同才对 2.废话是另一种没意义的区分。假设你有一个Product类,如果还有一个ProductInfo或ProductData类,那它们的名称虽然不同,意思却无区别 3.只要体现出有意义的区分,使用a和the这样的前缀就没错 4.废话都是冗余。Variable一词记录不应当出现在变量名中,Table一词永远不应当出现在表名中 D.使用读得出来的名称 E.使用可搜索的名称 1.单字母名称和数字常量有个问题,就是很难在一大篇文字中找出来 F.避免使用编码 1.把类型或作用域编进名称里面,徒然增加了解码的负担 2.也不必用m_前缀来标明成员变量,应当把类和函数做得足够小,消除对成员前缀的需要 3.不加修饰的接口,不要用前导字母I G.避免思维映射 1.不应当让读者在脑中把你的名称翻译为他们熟知的名称,单字母变量名就是个问题 2.专业程序员了解,明确是王道 H.类名 1.类名和对象名应该是名词或名词短语,类名不应当是动词 I.方法名 1.方法名应该是动词或动词短语。属性访问器、修改器和断言应该根据其值命名,并依Javabean标准加上get、set和is前缀 2.可以考虑将相应构造器设置为private,强制使用这种命名手段 J.别扮可爱 1.言到意到,意到言到 K.别用双关语 1.避免将同一单词用于不同目的 2.应尽力写出易于理解的代码,把代码写得让别人能一目尽览而不必殚精竭虑地研究 L.使用解决方案领域名称 1.尽管用那些计算机科学术语、算法名、模式名、数学术语 M.使用源自所涉问题领域的名称 1.如果不能用程序员熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称 2.优秀的程序员和设计师,其工作之一就是分离解决方案领域和问题领域的概念 N.添加有意义的语境 1.你需要用有良好命名的类、函数或名称空间来放置名称,给读者提供语境 2.如果没这么做,给名称添加前缀就是最后一招了 O.不要添加没用的语境 1.只要短名称足够清楚,就要比长名称好 P.最后的话 1.取好名字最难的地方在于需要良好的描述技巧和共有文化背景 三、函
硬核项目经理
2019/08/06
1K0
如何避免自己写的代码成为别人眼中的一坨屎!
普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码。如何写出优雅整洁易懂的代码是一门学问,也是软件工程实践里重要的一环。笔者推荐三本经典的书籍《代码整洁之道 》、《编写可读代码的艺术》、《重构:改善既有代码的设计》,下文重点将从注释、命名、方法、异常、单元测试等多个方面总结了一些代码整洁最佳实践,大部分是笔者总结于以上三本书中的精华,也有部分是笔者工程实践的总结。篇幅有限,本文将总结性给出一些实践建议,后续会有文章来给出一些代码整洁之道的事例。
lyb-geek
2018/07/26
6780
所有程序员都应该遵守的11条规则
我是一个倾向于生活在规则下的人。 现在,这些规则大部分是我本人为自己设立的-但它们依然是规则。 我发现为自己创建规则可以让我过得更好,因为这样做可以提前决定一些事情,而不是要在匆忙中做出所有的决定。 我今天早上应该去健身房吗? 我的规则告诉我说我要在周三前往健身房,今天是周三,因此我要去健身房,就这么办了! 这周,当我正在思考那些对我施加有影响的规则时,我想到了去制定一系列软件开发者都应该遵守的规则,我认为这可能是一个好主意。 现在,我承认,这里面的大多数规则比那些“指导方针”要求的要多,它们是: 1、技术
用户1667431
2018/04/18
7890
如何避免自己写的代码成为别人眼中的一坨屎
一、注释 不要给不好的名字加注释,一个好的名字比好的注释更重要; 不要“拐杖注释”,好代码 > 坏代码 + 好注释; 在文件/类级别使用全局注释来解释所有部分如何工作; 一定要给常量加注释; 团队统一定义标记: TODO 待处理的问题; FIXME 已知有问题的代码; HACK 不得不采用的粗糙的解决方案; 在注释中用精心挑选的输入输出例子进行说明; 注释应该声明代码的高层次意图,而非明显的细节; 不要在代码中加入代码的著作信息,git可以干的事情不要交给代码; 源代码中的html注释是一种厌物, 增
小林C语言
2020/12/23
7840
如何避免自己写的代码成为别人眼中的一坨屎
如何避免自己写的代码成为别人眼中的一坨屎!
摘要: Any fool can write code that a computer can understand. Good programmers write code that humans can understand. 普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码。
Java后端技术
2018/08/09
7530
程序员优秀之路:一起来看下这 97 位”砖家“能给出啥编程的好建议?(1)
咱们程序员在接到需求初期,是没办法对整个需求作完全正确评估的!(本瓜以为,由产品需求到技术落地是有着天然的鸿沟的)所以,多数情况下,我们都会在代码迭代过程中面对之前未预想到的问题。
掘金安东尼
2022/09/19
3500
代码洁癖系列(四):可忽略的注释
刚开始学编程的时候,老师就告诉我们,注释很重要,但是一直到现在,也没有人真正告诉过我要怎么写注释。还有很多人甚至干脆不写注释。所以今天想聊一下到底如何写注释。
Jackeyzhe
2020/03/11
6070
代码洁癖系列(四):可忽略的注释
相关推荐
如何写出让同事好维护的代码?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验