Time will tell.
1、可读性
可读性看起来似乎很主观。不同语言、代码、和团队对于可读性的定义不尽相同。但如果深入本质的话,就会发现代码可读性有一些非常关键的因素。
许多程序员太倾向于计算机了,只要程序能运行就一了百了。尽管是老生常谈,但这种方式完全断绝了人参与的可能性。
许多人会认为这些太基础、无关紧要。但我可以向你保证,我遇到的所有糟糕代码都是因为这些问题。而任何一段优秀的代码都采纳了至少部分实践经验。
2、嵌套代码
逻辑几乎是一切代码的基础。我们写代码是为了做决策、迭代和计算。一般情况下都会导致分支或嵌套,从而造成嵌套得很深的代码块。
虽然计算机很容易阅读这种代码,但对于人类则是非常大的精神负担。因此,代码会变得复杂、难以阅读。应该通过防御语句、提前返回或使用函数式编程等方式消灭嵌套代码。
3、死代码
所有注释掉的代码块、未使用的变量和无法到达的的代码都是死代码。它们就像在对读者说,“我与这段代码无关”。
日复一日,于是恶性循环开始了,死代码最终会埋葬你的代码。这正是经典的破窗效应。必须要找出并干掉死代码。虽然不需要把精力主要放在这里,但一定要时时留意。
4、使用对象
尽管现在是面向对象编程的时代,我们依然使用了过多的原始指令。
长长的参数列表,杂乱的数据,自定义的数组或字典结构等。这些都可以重构成对象。这样不仅能让数据结构变得正规,还能容纳所有重复的、使用原始数据的重复的逻辑。
5、大型代码块
虽然没有具体的数字,但代码块的长度应该是有限制的。如果你认为你的代码块过大,就应该对其进行识别、重组并重构。
这个简单的过程可以让你确定代码块的上下文和抽象级别,以便正确地找出代码的任务,并将代码重构到更加易于阅读、更简单的代码块中。
6、命名规则
好的命名很困难。有个小技巧在编程的许多方面都能用得上,包括命名,那就是“延后”。不要纠结某个东西的命名,继续写代码就好。
就算是用一整句话命名一个变量都没问题,继续写代码就好。当你完成整个功能之后,更好的名字就会浮出水面。
7、删除注释
过多的注册会影响阅读感观,而删除一些过多的注释我才能把精力放到可读性上。
当然,如果是特别有必要的这种情况下,肯定需要注释来说明。但大多数情况下,应该尽量重写代码使得它不需要注释也能看懂。
8、合理的返回
我们总是选择返回最奇怪的值,特别是对于边界条件的情况,像-1、687或null,然后得写很多代码来处理这些值。实际上,null 的创造者称它为 “10亿美元的错误” 。
应该努力返回有意义的值。理想情况下,最好是即使在反面情况下也能让调用者继续执行的值。如果真的是异常情况,那么最好用其他方式来通信,而不是使用 null。
9、三的原则
想一想数学上的序列。给一个数字2问你 “下一个数字是什么?” ,可能是3可能是4,但也可能是1或2.1。实际上你没办法知道。
然后我提供了序列中的下一个数字2, 4然后问,“下一个是什么?”可能是6,8,也可能是16。
同样,尽管猜对的可能性增加了,但还是不能确定。然后我又提供了数列中的第三个数字:2, 4, 16,然后问 “下一个是什么?” 。有了3个数字之后,程序员的大脑很容易看出这是个平方序列,于是确定下一个数字是256。这就是三的原则。
虽然这个例子跟编程没关系,但它告诉我们,我们不应该太早做抽象。三的原则能阻止我们过早消除重复的努力,直到有了足够多的信息后再做出决定。毕竟 “重复的代价远远低于错误的抽象。”
10、对称性
最后一条实践经验能给所有代码的可读性带来诗一般的润色,那就是对称性。这条来自Kent Beck的《实现模式》一书,书中说到:代码中的对称性是说,同样的思想在任何地方都使用同样的实现。
不过说起来容易做起来难。对称性体现了编程的创造性。它是许多其他实践的基础:命名、结构、对象、模式等。不同语言之间、不同代码之间和不同团队之间对于对称性的定义都可能不一样。
因此,你需要花上许多年去追求对称性。但是,一旦开始在代码中使用对称性,就会迅速呈现纯粹的形式,代码的形状也会迅速变好。
好了,以上就分享到这里,如果你对更多内容、及Python实例练习题、面试题、自动化软件测试感兴趣的话可以加入我们175317069一起学习喔。群里会有各项学习资源发放,更有行业深潜多年的技术人分析讲解。期待你的加入!
最后祝愿你能成为一名优秀的工程师!
欢迎【评论】、【点赞】、【关注】~
Time will tell.(时间会证明一切)