小白
记得在大一刚接触编程时,经常陷入语法的陷阱,把大部分精力放在了学习语法上,经常因为知道了语言上的一些奇技淫巧而沾沾自喜。大一实验课设计一个的图书管理系统,代码删删改改,磕磕碰碰最后勉强跑通,感觉费了好多脑细胞。时常听到编程语言只是工具,好的代码是给人看的,好的代码需要好的设计。之后学习了软件工程、接触了23种设计模式,但是仍然懵懵懂懂,经常在想编程到底有没有银弹。
工作
工作之后,部门潇潇洒洒规定了百八十条的编程规范让新员工记住。印象比较深的就是一个函数不要超过50行。其实在刚开始我也没觉的有啥坏处,按照规定来就行了。之后就出现了各种牛鬼蛇神的代码,许多代码明明放在一个函数逻辑比较通顺,为了符合编程规范必须拆分成2个甚至3个函数。
思考
一个函数超过50行就是烂代码吗?显然不是这样。我也写了几年代码,自己有一点感触。当你要设计一个类或者函数时,第一要先明确函数的功能,明确好入参和出参**。新手时常陷入其中细节的逻辑中,缺啥参数返回头在去增加,修改来修改去,最终成型的代码,参数可能有5、6个,临时变量7、8个,函数行数膨胀到2~3百行。第二在写具体逻辑的时候,如果发现你的脑细胞不够用的,一定要意识到你应该再封装一个函数了**。你自己写的代码你应该最清楚业务逻辑,但是你自己写的时候都费劲,如果这样的业务代码交给别人去review或者维护那将是一个灾难。一般一个函数代码行数不应该超过一屏半,最好不要超过150行,但是代码行不应该做为判断代码好坏的绝对条件。
最后回到主题编程有银弹吗?我认为是没有的,不能靠条条框框的编程规范去让程序员写出更好的代码。靠编程规范约束的开发人员不会是一个好的开发人员,他已经被这些条条框框约束住了,缺失了创造力。大家最不愿意做的是啥?就是写设计文档,说白了就是不愿意思考,如果模块的接口定义好了,其实剩下的就是搬砖了。不否定编程规范对新手的积极作用,但是作为一位老鸟应该明白其中的门道。希望有一天我也能像卖油翁那样说一句:“无他,唯手熟尔”。