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

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

文/贪玩的乔治

 

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

 

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

 

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

 

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

 

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

 

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

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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


 

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

 

继续阅读
工程师故事 | 公司招人说的“福利多多”你看完一定“呵呵”

今天公司准备发布一则招聘启事,负责招聘的刘工发给我一份文件让我看一下。前面几条是对专业的水平的要求,看到后面几条公司待遇我就发懵了,尤其是最后一项十分耀眼----“……传统节假日发放丰厚的福利……”在我印象中,这一条无论如何也不符合我多年的实际体验,思考良久我还是说出来了:

工程师故事 | 老板的座驾要升级,员工的奖金要缩水

“骆驼,我终于知道《西游记》中唐僧的紧箍咒是什么了:扣钱、扣钱、扣钱……”单位的李工非常会讲笑话,但是扣钱对孙悟空不一定有用,他有自己的花果山,随便卖卖水果、搞搞开发旅游就可以自给自足了,但是这对我来说确实是紧箍咒,因为我们老板擅长这个。

工程师故事 | 人口红利下,工程师如何自我保值?

黄仁宇先生写万历十五年,说这一年其实并没有发生什么大事,距离权力煊赫一时的太师张居正被全面清算已经过去三年了,首辅申时行恪守着中庸之道,在意欲废长立幼的万历皇帝和试图维护封建伦理秩序的文官集团之间小心翼翼地充当和事佬的角色,边地有些流民造反,努尔哈赤还不成气候,至于水灾、旱灾,在这个幅员辽阔的王朝中,自然都算不上什么新鲜事,也动摇不了帝国

探讨如何利用单片机来设计一款产品?

现在的电子设备几乎离不开单片机,在大学里有学了这么久的单片机。那如何利用单片机来设计一款产品呢?今天来和大家探讨一下。

线程,进程,程序的区别

任务是代码运行的一个映象,从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、I/O设备及内存空间等系统资源,并独立于其它任务,与它们一起并发运行(宏观上如此)。VxWorks内核使任务能快速共享系统的绝大部分资源。 在VxWorks6.4中,进程是指Rtp,进程包含任务,任务是调度的最小单元。

更多资讯
联发科启动武汉研发中心二期建设,布局车载电子、智能家居相关芯片设计业务

近期,联发科技已启动武汉研发中心二期项目的建设工作。

数据流量激增,国产发力加速光芯片国产化替代进程

在光通信建设中,光模块、光器件代表着光通信行业最核心的竞争力。而从整个光器件产业链来看,其中的主要环节有光芯片、光器件、光模块、光设备等。其中,光芯片属于技术密集型行业,工艺流程极为复杂,处于产业链的核心位置,具有极高的技术壁垒。

AMD今年将发布第三代锐龙桌面级处理器,性能如何?

CES2019上,Lisa高调宣称第三代锐龙桌面级处理器将在2019年中发布,时间直指台北电脑展!

Cree的SiC晶圆供应
Cree的SiC晶圆供应

SiC器件的使用目前看来只是一个小开始,从上游产业链来说,开始扩大规模和锁定货源,这是一个很有意思的事情。

DRAM降价和降产的博弈,三星、美光、海力士等存储行业龙头如何选择?
DRAM降价和降产的博弈,三星、美光、海力士等存储行业龙头如何选择?

孙子兵法中有过这样的描述:故善战者,求之于势,不责于人,故能择人而任势。意思是善战者追求形成有利的“势”,而不是苛求士兵,因而能选择人才去适应和利用已形成的“势”。

电路方案