程序猿与注释的相爱相杀

原创
移动开发
程序猿作为地球上最为神奇的物种之一,干过不少惊天地泣鬼神的雄图大业,同样给人们留下了不少茶余饭后谈论的梗。在普通人们眼中,程序猿是神秘的,是不修边幅的,是没日没夜加班的工作狂;但在程序猿眼中,自己是帅气的,拯救世界的,一枝梨花压海棠的科技先驱。

【51CTO.com原创稿件】程序猿作为地球上最为神奇的物种之一,干过不少惊天地泣鬼神的雄图大业,同样给人们留下了不少茶余饭后谈论的梗。在普通人们眼中,程序猿是神秘的,是不修边幅的,是没日没夜加班的工作狂;但在程序猿眼中,自己是帅气的,拯救世界的,一枝梨花压海棠的科技先驱。

[[197153]]

普通人眼中的程序猿

程序猿眼中的程序猿

程序猿眼中的程序猿

程序猿的丰功伟绩,最直接的体现就是像艺术品一样的代码,行云流水、一气呵成。但不是所有的程序猿都能看懂别人写的代码,就像不是所有的人都会欣赏艺术品一样。毕竟代码是用于业务生产,为了让别人能够更好理解自己的作品,也为了让自己能够更深刻的记住创作艺术品的过程,程序猿对自己的作品进行了加工——注释

注释,顾名思义,就是对代码进行释义。注释不是写给机器的语言,不参与到代码的编译、连接、工作中去,而是写给人看的内容。众所周知,代码,是让计算机按照人的预想进行工作,注释并没有让代码运行得更加快,那么注释到底扮演者什么样的角色呢?程序猿和注释之间又有怎样的故事呢?

注释是什么?

注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性

为什么写注释?

1.好记性不如烂笔头

用于业务生产的程序,通常都不是寥寥几语了事,而是大篇大篇的代码,更有甚者,代码行数千万级别。虽说现在编程语言越来越高级、方便,对程序员越来越友好,大大缩小了代码行数,但功能全面的、性能稳定的代码依然有不小的篇幅。程序员在写代码的时候,语法规则虽然不难、不多,但是参数、函数、变量等等自定义的元素依然有很大的变化。代码再有规则,但毕竟不是人类语言,不能一眼看明,再加上篇幅巨大,难免会有写了后面往前面的尴尬处境。再加上前后代码写的时间有差异,程序员想要记住自己所写的所有函数、变量、参数,也是很困难的。与其花时间记住这些函数、参数,不如一行注释来得更快。来看看51CTO社群开发者是怎么说的吧:

PHP-小星星-广州:曾经,一个东西,写的时候思路清晰,然后半年后愣是没看懂。

PHP-Coeus-安徽:别说半年了,我上周写的一个方法,现在都已经不知道上周开了什么脑洞。

写代码要和写注释同步进行,对作品进行阐述,这样不但可以预防写后忘前的尴尬处境,还能让自己的创造思路更加清晰。

古人云:好记性不如烂笔头。

2.我为人人,人人为我

书写篇幅巨大的代码是一个宏伟的工程,这样的工程通常不是一己之力能够完成,众人拾柴火炎高,众人划桨开大船。谈及到协同工作,首先要一个共同的标准,艄公多了打翻船的道理大家都明白。51CTO开发者社群Web-白杨-郑州认为:一般立项的时候有规范文档,对象、函数声明一系列都要求一致。

但每一个程序员对艺术的理解不一样,创造艺术品的方式和过程也会大相径庭。但大家都是一起干活,工期到了拿不出产品难免又要被工头教训。

程序员:“怎能让自己的艺术屈服于生活,简直是侮辱。”

工头:“好好好,听你的,只要你不写 :(){ :|:& };: (fork炸弹)。但是你总得让你的小伙伴能和你一起干活吧,你的小伙伴得知道你干了啥是吧。”

程序员:“那我写好注释,他们就能领悟到我的艺术了吧。”

工头:“小伙子不错,觉悟很高,中午盒饭加鸡腿。”

“注释写的多少、写的是否详细,也影响了使用、修改你代码的人员的门槛。”51CTO开发者社群PHP-Coeus-安徽的这个看法被很多开发者认同。为了更好的协同开发,和工作的小伙伴能够一起愉快的玩耍,写一个清楚明白的注释是非常重要的,相爱没有那么容易,每个程序员有他的怪癖。如果每一个参与到项目开发中的程序员都能将代码用心写好,这无疑是协同开发一个利好因素。而且,你的注释也会让对你代码顶礼膜拜的初学者获益匪浅。

古人亦云:我为人人,人人为我。

3.前人栽树,后人乘凉

维护过别人代码的程序员,都应该经历过一种切肤之痛——因为没有注释或者注释不清楚而导致完全无法理解这代码。创作者的艺术品,接盘侠的毁灭日。

[[197154]]
创作者眼中的代码

接盘侠眼中的代码

接盘侠眼中的代码

其实这并不夸张,因为编程语言的特点,每位艺术大师都有足够的发挥空间,但天马行空的想象确实会让后人难以琢磨。简直就是前人栽树,后人吃土的节奏。

谁也不想看到这样的代码,单单是要看懂就废了九牛二虎之力,分分钟吐血的节奏啊。 

程序员:“我去,这段代码什么意思?这个调用是想干嘛?哪里又冒出来这么个玩意儿?老板,我想死。”

工头:“想死都不行,你知道该怎么写代码了么?”

程序员:“我知道了,我一定要写好注释,为以后的工作铺平道路。”

工头:“嗯嗯,小伙子很有远见,看来以后是要接我的班了。”

程序员:“我接了你的位置,那你呢?”

工头:“我去做产品经理。”

程序员:“。。。。。。。。。。。。。。。。”

51CTO社群开发者Java-小源-珠海认为:自己写的方法会给点注释,不然到时别人要用时还需要费时间去理解。

写好注释,会为业务的发展和程序的迭代提供不少便利,谁都不想当接盘侠,那就谁也别做隔壁老王。

古人还云:前人栽树,后人乘凉。

当前IT行业的发展趋势,系统的迭代、程序的重构、工作的交接、对新进人员的培训等事情越来越多,这些事情无一例外都会把已经写过的代码重新或者重复阅读,如果在初始编写代码时,就做到完整、清晰明了的代码注释,对后续工作会有巨大的帮助。不仅提高工作效率,还能加固小伙伴之间的友谊。事实上,就算只是自己看自己的代码,如果有注释,也能加深印象,缩短代码查找时间。因此,任何开发人员,都应该养成良好的代码注释习惯。

如何写出漂亮的注释

同代码一样,漂亮、有用的注释会给艺术品锦上添花。要写出好的注释,一样需要技巧。51CTO开发者社群小伙伴给出很多建议。

  • 首先,注释是给人看的,要能让人一眼明白其中的含义,不能拐弯抹角。

PHP-Coeus-安徽:一般按照规范来,看变量名,基本上都会知道方法是做什么的,变量是什么,需要注释的内容就是,为什么我要在这里调用另一个方法,为什么我要修改这个class状态值。

后端接口开发-刘声杰-成都:我的注释就是:首先一定要写明白这个是做什么的,而且是什么时候写的,然后如果删除了,一定要添加一个删除标签说明,尤其对于返回值,一定要说明每种情况,对于已经有替代方法的,一定要表明优秀用,每个参数的类型是什么等等。

  • 其次,注释可以进行一个分类。

Web-白杨-郑州:我习惯点亮以后,开头注释一个目录,然后分ABC种类标色,A类是加进去肯定跑不动,B类是加进去能跑一半 ,C类是我都不知道的鬼代码。。。。

这样一个分类,可以帮助代码维护者更好的阅读代码。

  • 第三,注释也要恰到好处。

PHP-Coeus-安徽:之前我带一个实习生和他说 ,你要有注释的习惯,然后看他的代码: $a = $b+$c;  // 做b、c加法。

这就看得我尴尬癌犯了,这强迫症晚期了吧。要做合适的注释,而不是所有的代码都进行了注释,这增加了工作量,却也没有对代码维护者有任何帮助。

  • 第四,注释可以保存代码痕迹。

程序员在修改了代码以后,未测试之前,代码的质量是无法得到有保证的,有可能会被改得更糟糕,这时可能需要恢复到之前的代码,如果你把之前的旧代码删除了的话,工作会变得复杂起来。

后端接口开发-刘声杰-成都:重构部分代码的时候,有时会保留部分之前的代码,注释掉,直到运行稳定以后,才慢慢的将其删除掉,如果以后需要恢复,就看SVN记录。

现在让我们来看看漂亮的注释到底什么样子:

图1

Java-勇波-北京

图2

PHP-coeus-安徽

【写在最后】

罗马不是一天建成的,写注释也是一个循序渐进的学习过程。写注释和写代码一样,需要多加练习,掌握一套自己熟练的注释方法。同时,在参考大神的代码时,也可以借鉴大神写注释的方法,从而提升自己写注释的功力。

在协同工作中,更是需要和项目组的成员多沟通,练习一套通俗易懂,大家都能看明白的注释。注释也是代码中不可缺少的一环,各位一定不能掉以轻心,能够写出漂亮的注释,也是一位程序员优良素质的体现。

如有任何疑问,欢迎留言,也可以加5CTO开发者QQ群交流,群号542270018。

51CTO开发者交流群③群 542270018

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

责任编辑:何星 来源: 51CTO
相关推荐

2018-05-03 21:35:02

2018-10-30 10:58:22

蓝牙5WiFi无线网络

2017-12-12 16:49:32

技术产品经理代码

2015-08-24 09:51:48

2021-01-10 21:19:12

DevOps敏捷方法开发

2017-10-23 13:15:51

2021-08-26 05:35:20

黑客网络安全网络攻击

2017-02-09 16:26:08

超融合刀片服务器

2021-03-25 09:41:26

CIOCISO疫情

2020-05-21 11:23:08

微软LinuxWindows

2018-06-04 12:01:35

微软GitHut开源

2015-05-28 17:21:21

去IOE云智慧

2019-08-30 08:45:40

人工智能AI开发者

2022-06-27 09:54:38

编程语言JavaC++

2020-03-03 15:11:04

开源技术 软件

2020-12-19 10:46:20

黑客网络安全网络攻击

2020-03-08 16:47:59

微信苹果腾讯

2015-01-28 09:46:23

PHPNode.js

2022-07-08 09:41:20

遗留系统服务拆分

2017-10-23 13:36:33

程序员APP更新说明
点赞
收藏

51CTO技术栈公众号