写代码多年,接手过大量别的程序员写的系统。每接手一个系统我都要吐槽一番,代码写的烂,可读性差,不美观;用的语言有问题,不应该用PHP,应该用java或c#。反正任何别人写的系统并且由我接手的我都要批判一番,认为自己总能写的比他们好。
不过随着行业经验的增加,我发现自己写的代码也老是被别人吐槽。结合平时和同行的沟通和观察,我发现不管是什么样的程序员,不管是经验丰富的老手还是刚出道的菜鸟,有一个共同的特征就是会抱怨别人写的代码有问题。
显然,不可能所有的代码有问题, 也不可能所有的程序员有问题。
就拿最近发生在我身上的事情说好了。 最近在公司换了一个部门,原来的工作交接给了原来部门的同事,与此同时自己也接手了新部门的系统。
老部门接手我之前维护的系统的同事经常来找我麻烦,今天这儿不明白,明天那儿有问题,我可以深刻感受到他们对我写的代码的吐槽与怨恨。
同时,对于我在新部门开发维护的这套系统,我的感受完全和维护我之前系统的同事的感受一模一样。
造成这种问题的原因有很多
首先,代码是对业务逻辑的描述,先有业务逻辑,再有代码。要理解代码, 必须先理解业务逻辑, 在不理解业务逻辑的情况下,要理解代码肯定存在障碍,而接手非自己开发系统的程序员往往是不了解系统的业务逻辑的。当然,通过代码反推业务逻辑也是可行的,但会加倍费力,许多程序员吐槽别的程序员代码有问题往往就是在反推业务逻辑的过程中发生的。
其次,对程序员而言,代码是自己写的还是别人写的是有区别的,这是铁律,每个程序员都有体会。对于别人写的代码,即使写的再好,在没有深刻理解的情况下, 程序员也会觉得读起来费劲, 难以维护。举例来说,对于github上的牛逼项目,如果有程序员在没有接触过的前提下敢说轻而易举看的懂的,那就是图灵转世。 我看不懂linux内核源码, 未必就是它质量有问题, 其它项目也一样,包括我们平时写的。
再次,很多时候,程序员的确会觉得自己写的代码有问题,想改,却腾不出手, 因为工作太忙,需求堆积,有大堆功能要做。 而代码写的好不好,程序员的老板才不管。 代码写的好老板不会给你加工资,功能完不成有可能奖金就没了,孰轻孰重,程序员懂得如何权衡。
所以,程序员们, 不要吐槽别人的代码写的烂,想要轻轻松松一样看懂别人写的代码,不可能的, 除非计算机科学以及衍生的商业逻辑被重新定义,否则除非不当程序员, 不然没有办法可以避免。