工程师故事 | 谁规定写代码必须得写注释?

2019-01-11 12:34:26 来源:EEFOCUS
标签:

文/贪玩的乔治

 

据说,人体的细胞每隔七年就会全部更换一遍,从生理学角度上来说,七年后的自己已然不是今天的你,七年时光,虽不说脱胎换骨,但至少也是物是人非了。社会急匆匆飞速发展,万事万物都在自我变革中吐故纳新,现代社会的细胞-公司也大浪淘沙,老面孔逐渐消失,取而代之的新面孔慢慢变老,最终也慢慢消失不见,说实话,在一家公司能够呆够七年的骨灰级员工越来越少了。

 

前段时间,公司人事风云变幻,呼啦啦一下子走了十来号人,公司领导一边痛感仕途黯淡,为自己的前途命运忧心不已,一边想着怎么保住技术成果,顺利交接技术资料。有感于过去由行政人员处理资料交接的随意、马虎和搞笑,这次,破天荒地让技术人员担当起了技术资料交接的重任。笔者做为一名暂时没有透露出出走意向的骨灰级员工,三生有幸地被领导赋予了交接资料的任务。

 

‘把老子当枪使!’我不禁悻悻然地想,同时开始考虑怎么平稳地交接资料,既能向耍流氓的领导交差,又不至于破坏和离职员工多年的交情。‘尘归尘,土归土,一切荣耀归于主!’我想到这么一句话,然后确立了交接技术资料的原则:息事宁人,爱咋咋地!

 

公司列了一张技术资料交接清单:需求文档、可行性分析、设计方案、原理图、PCB、源代码、论文、专利、测试计划等等,安排离职的老同事张哥和我对接。看着这份资料交接清单,我在想,张哥只要给我一个能看懂、能跑起来的源代码,给我一份原理图和PCB,我就交差了,其它文档性的资料,爱给就给,不给拉倒。本着这种息事宁人的态度,我预感到交接工作应该会非常顺利地完成。

 

‘叮咚,’张哥在QQ上把交接资料给我传了过来。接收、下载、解压,一顿操作之后,我开始阅读起了张哥发给我的资料。

 

文档有那么三四篇,我打开一看,基本上空洞无物,算了算了,息事宁人嘛!

 

 

打开原理图和PCB一看,哎,原理图右下角的完成日期有点太早了吧,显然不是最后一版,算了算了,一切法得成于忍嘛,忍忍就算了。

 

打开源代码一看,嚯,那叫一个清爽,代码错落有致,紧密相间,有的缩进两个空格,有的缩进三个空格(为什么是奇数,好奇怪的说。)有的中间空了好几行,有的中间不空行。一个函数好多大括号都不知道到底是括到哪里,一个函数好几页看不完,一个源文件翻了好多页还没有翻完,更要命的是,里面居然一行注释也没有,看起来让人不仅头大,而且蛋疼!

 

一股热血涌上了我的脸庞,这次我没有绷住,“张哥,你这代码里怎么一点注释也没有啊?” 说好的息事宁人原则被我抛到了脑后,事后想起来,还有些惭愧。

 

“小李啊,这你就不懂了吧。”皱纹很快爬满了张哥的脸庞,他的表情不自然极了,透过厚厚的眼镜片,他睥睨着对我说。“优秀的代码都不加注释,我们要透过代码本身去理解代码,而不是通过注释去理解它。”他振振有词地说道。

 

做为软件一哥的我,苦笑了起来,对于这种恬不知耻的回答,是反驳他好呢,还是反驳他好呢?“张哥,你说的很对,阅读性非常好的代码可以不加注释,代码本身的阅读性非常好,这个前提是,函数名字起得非常好,一看就知道这个函数的作用,变量名称起得简洁易懂,一看就能推断出它的用途,而且,源文件本身阅读性也非常好,相关的这一类代码放在一个源文件中,其它的放在别的源文件中。函数长度最好不要超过一个屏幕能显示的最大行数,尽量用子函数而不是多条语句充当函数主体。头文件不要互相包含来包含去,能用宏的地方最好用宏,能用枚举的地方最好不用那么多数字,可是你的代码,可读性实在是太差了嘛!”

 

我鼓起腮帮子,说得唾沫横飞,从软件工程说到实战技巧,从源代码编码规则说到历史上由于软件故障引起的各种惨痛教训。可是,我很快就意识到,我这简直就是“对牛弹琴”啊!

 

张哥一边拨弄着自己的指甲,以此来表示对我借机宣扬自己软件素养的不以为然,一边不时地冷笑几声,等我说完后,他把胳膊肘放在我的电脑桌上,托起他那颗肥胖的脑袋,颇有仪式感地摇了几下,最后,他直勾勾地盯着我的眼睛,说,“你觉得公司领导能理解你说的这些话吗?”说完这句话,他把两只手从脑袋上拿开,搓了几下,拍了拍我的膝盖。

 

“我们都是技术人员,都有着对优秀代码的自觉追求,其实,我也很讨厌注释,我的代码里也基本上不加注释,但是,我的代码的阅读性真的非常好,代码本身就是注释!”看着他并没有什么实际的表示,我继续对他口诛笔伐。

 

“对,你说的很对,”张哥笑吟吟地对我说。“干净的代码赏心悦目,而且不会耗费程序员无关的精力。代码改来改去,如果注释不跟着一起改,注释和代码的设计一致性很快就会丧失了,所以,与其把时间放在写注释上,不如用在代码的重构上。”

 

张哥的心里像明镜似的,和他那晦涩难懂、混乱不堪的代码形成了极大的反差。

 

我怔怔地看着他,张哥的两鬓已经泛白,无神的眼睛里有着几许血丝,一时间不知道该说什么好。闷热的空气好似凝滞了,我看着他,他看着我。

 

“张哥,”我打破了这种难堪的沉默,“你辞职后还干技术吗?”

 

“不干了,我一个亲戚,做建材的,正好缺人手,我跟着他干一阵儿。干技术实在太累了。”张哥突然像打了败仗的逃兵,泄气地说道。

 

“哎,”看着眼前这位共事了好几年的同事,我一时间五味杂陈,说不出话来。“我给你改改代码怎么样?咱俩用一天或者两天的时间好好捋一捋,改一改,不用改的多好,能交差就行。”我突然想到一个折中的办法,并为自己能够想到这么妙的方法感动不已。

 

“可以,”张哥爽快地答道。“我家附近开了一家火锅店,有时间请你吃一顿。”

 

‘跟我打哈哈,哼,你还嫩了点。’我不禁暗自思忖道。“有时间请吃饭就是不打算请的意思呗!”

 

“我随时有时间,今天下了班怎么样?”我不失时机地抓住机会说道。

 

张哥是个老实人,实在人,愣愣地看了我一眼,无奈的说,“好吧,晚上我请你。”

 

与非网原创内容,未经允许,不得转载!


 

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
玩转Zynq连载9——使用GIT进行工程备份和版本管理1
玩转Zynq连载9——使用GIT进行工程备份和版本管理1

双击“TortoiseGit-1.8.5.0-64bit.msi”进行安装。全部使用默认选项。

直流电源如何实现恒压/恒流电源使用
直流电源如何实现恒压/恒流电源使用

大部分实验室都把直流电源当作恒压/恒流电源使用。记住,电源是一个回馈系统,可以实现特定参数的调节。在恒压条件下,电源的回馈控制回路可以调节电压。在恒流条件下,电源的回馈控制回路可以调节电流。

通过STM32定时器计算时长
通过STM32定时器计算时长

设置非常简单,以下是产生1ms中断的设置,和产生10ms延时的函数

工程师故事 | 李工的“博弈”小妙招,让我拿到了全额项目奖金

一大清早李工突然和我聊起《楚汉争霸》,李工说得对,要是项羽不死,韩信还有用兵之处。项羽兵败乌江,韩信又不会搞经济建设,自然也就没有了存在的价值。

一文了解Python中的数字类型
一文了解Python中的数字类型

数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。

更多资讯
曙光信息产业股份有限公司关于被列入实体清单事项的声明

曙光信息产业股份有限公司(以下简称“中科曙光”或“公司”)是中国科学院下属、注册在中国天津市的高技术企业,主要从事高性能计算机、服务器、存储产品开发及软件、云计算、大数据服务业务。2014年在上海证券交易所上市(股票简称:中科曙光,股票代码:603019)。

专业定制化云计算编码芯片--坤芯 K10

随着人工智能的发展,其主要分支生物识别技术也将进入大爆发。根据市场研究公司MarketsandMarkets的最新预测,生物识别市场将从2018年的168亿美元增长至2023年的418亿美元。这一增长代表预测期间的复合年增长率达到19.99%。

英特尔宣传 Xe 独显,蓝加银色调设计炫酷
英特尔宣传 Xe 独显,蓝加银色调设计炫酷

2019年已经过半,英特尔也加快了自家独立显卡的宣传节奏。就在昨天,英特尔中国官方微博突然发出了自家显卡渲染视频,可谓是360°全方位无死角的向大家展示了Xe独显的外观。

AMD 计划推出 Zen 3 “米兰”服务器 CPU,将继续使用 DDR4 内存
AMD 计划推出 Zen 3 “米兰”服务器 CPU,将继续使用 DDR4 内存

AMD的Zen 2系列处理器即将推出,带来更多的核心数量,更高的效率和更高的IPC。而在不久的未来,AMD计划在2020年中期推出Zen 3“米兰”服务器CPU。

由金耳朵特别调校,高通的全新音频编解码器有多牛?
由金耳朵特别调校,高通的全新音频编解码器有多牛?

根据官方的消息,高通(Qualcomm)近日推出全新音频编解码器—— WCD937x系列,由Qualcomm Aqstic音频技术支持,旨在提供绝佳音质,并由“金耳朵”特别调校。