最近有读者问了我一个问题,工作中如何去阅读别人的代码(这里的别人,主要指的是同事)我后来想了很久都没有回复。。。因为说实话,工作中我一般不太会主动去看别人写的代码。当然,这和类似主动去看 dubbo 源码这种,不是一回事。
刚工作的时候,如果有同事让我帮他改进代码,我也曾傻乎乎的直接就去翻看对方的代码。在工作五年后,我突然意识到这件事本身而言和对方直接邀请我看他的内裤并没有什么区别。
因为在看之前,你真的不知道对方是干净可爱的小黄鸭,还是染着黄色的 hello kitty,又或者根本就是一个奇怪的哥特式黑洞。上面的比喻可能有点夸张,但不可否认,大部分情况下直接去阅读别人的代码是事倍功半的。往大里讲,如果一个团队一起去看前人写的代码,甚至是劳民伤财。(我要不是见过,我会胡说?)
一般而言,如果你入职一家新公司,上司上来就给你安排让你重构代码,那如果不是欺负你,就是把你当萌新忽悠。先不说你这件事能不能干好,首先这种事基本进不了KPI,重构真出了错误还得自己兜底,绝对是属于吃力不讨好的工作。(注意前提条件:刚入职)
我猜到这里有人要说话了。浩哥,那按照你这么说,我们在工作中就不去看别人的代码了吗?并不是。首先你需要明确你看对方的代码是图什么。
如果你是为了了解系统,那么ok。我建议你最好是找你们项目组熟悉代码的人给你讲讲代码。如果你是leader那很好,你完全可以要求下属用语言或者图形来描述他们的代码,甚至你可以要求他们反复去改进凝练描述语言。这有两个好处:
- 节省你的脑力成本
- 提高对方的组织能力
当然,这里其实有一种小技巧。如果你让对方给你讲解,最好是分 私下+组会 两种形式。私下沟通交流,可以多对难点疑点提出质疑。就我的经验,一般你私下能给对方指出问题,他还会感激你(觉得你牛批)。而组会的目的,可以提高其重视程度。
“你说的都对,但是我不是领导。我现在就是被逼着要改别人的代码怎么办?” 那这里我的建议是,如果对方没有离职。一顿大盘鸡 + 一瓶可乐,让对方给你讲解讲解代码。而不是自己去看。不要觉得 low,程序员大多都是好忽悠的。。。哦不,好说话的。
“但是对方离职了” ,如果你真的很不幸,遇到了这种情况。那基本上就只能是 “明知山有屎,偏向屎山行“,呵呵呵呵。
我之前还真就遇到过这种情况,工作两年的时候,接手过一个项目,同事离职的时候很稳的告诉我:这个系统只需要运维就好了,没什么开发工作。。。
当时我竟然真的信了对方的邪,交接的时候基本没怎么看代码,后来他走了不到两天。服务端突然出问题,当我用 idea 打开那个页面的时候,整个页面都是黄黄的。嵌套七八层的if else,外加一百来行的 switch。我寻思能不能从表结构入手,desc table 一看,竟然特么是 field1,field2。那画面,辣眼睛。。。。
好了,我想最后还是我要正面回答一下这个问题。如果同事离职,真的要接手屎一样的代码该怎么办?
最后,分享一个Quora上描述读别人代码的心情的图片:
PS:一般去看别人的代码,会出现两种心情:
- 居然能特么这么写?(杂碎怎么混进来的)
- 居然能特么这么写!(大牛和我做朋友吧)
我把我写的所有题解都整理成了一本电子书,每道题都配有完整图解。点击即可下载