优质代码:好代码没有止境
大家都在说要写出优质代码、整洁代码,这一点即使对编程新手来说也并不陌生,但如果我问你:什么叫优质?什么叫整洁?很多人心里并没有明确的概念。其实如果我们做一下研究和细分,就会发现代码也能分出清晰的等级,并且你研究得越深就越能感受到,好的代码没有止境。
什么叫优质代码?在我看来,所谓优质分为三个等级。
1.初级:可读。代码写出来主要是让人读的,顺便让机器执行一下。可读的意思包括:命名要好—好的命名是有意义的,而不是A1、A24这种没有意义的名字;布局清晰—分支尽量少,不要用太多嵌套;注释明确—写明为什么用这段代码,以及怎么用这段代码,而不是解释这段代码是什么;一个文件或一个函数的代码量不要太大;代码不要重复;不要有反逻辑,用通用的编码模式进行编码,等等。可读是对编码最基本的要求。
2.中级:可扩展。一段代码写出来不是一成不变的,它要根据需求的变化而变化。可扩展的意思是可维护,意味着我不必因为未来的修改大动干戈,甚至不改主干代码就可以实现修改。面向对象和函数式的各种设计模式,比如状态机、声明式设计、SOLID、IoC/DIP等都可以让你的代码达到这个级别。
3.高级:可重用。优质的代码没有止境,最高级别的代码是可重用。举个例子,古人发明了轮子,而轮子可以用在马车上、汽车上、飞机上,这就是可重用。代码也一样,优质的代码写出来,可以用在很多场景里。要实现可重用这一点,可用的技术有DSL、面向对象的设计模式、Web Service,还有时下最新的“Codeless”等。
要想达到上面的这几个级别,非常不容易,并不是你把代码写出来,可以跑通就行了。举个例子,我们现在的电路板,上面的线路横平竖直,非常规矩,但之前不是这样。我小时候拆开黑白电视机的后盖,发现里面的线是乱七八糟的,那就是“不可读”。代码也一样,可读的代码不复杂,简洁干净,它的显著特点是控制逻辑少,比如:程序的分支少—写代码是有分支的,满足某个逻辑走分支A,不满足某个逻辑走分支B,然后分支里面还有分支,分支之间可能还有循环和跳转。好的代码就是要把所有分支、循环、跳转减少,让人能够看到执行的条理性,而不是一个迷宫。
而要想把这一切控制好,说到底是一个解开复杂度的问题,如果往深了研究,你会发现全世界的软件工程师都在解决复杂度难题。所谓复杂度,一般由业务逻辑、控制逻辑和数据逻辑组成,一旦把三者揉在一起,程序一定会乱,并且复杂度急速上升,业务逻辑决定了复杂度的下限,控制逻辑决定了复杂度的上限,两者如果缠绕在一起,复杂度就呈现级数攀升。真正的高手才能把它们分开,要分开我们就需要进行解耦。通常用到的方法有:(1)设计模式;(2)函数式编程;(3)DSL; (4)状态机;(5)插件;(6)依赖倒置和反转控制;等等。
上面这些都是很专业的技术,新人阶段不一定能够理解并掌握,放在这里的目的是希望帮你明确精进的方向。
请记住,好的代码没有止境,如果不追求好的代码,你就只是一个“代码操作员”。
【免责声明】
1、个别文章内容来源于网络善意转载,版权归原作者所有,如侵权,请联系删除;
2、所有图片来源于网络,版权归原作者所有。如有侵权问题请告知,我们会立即处理。