因为程序是逻辑的集合,是一种结构化的事物,因此程序的美往往体现了某种秩序。
1. 基本的秩序是基础 CS 理论的应用,比如程序中实现了一某种数据结构,针对数据结构的某种算法,这些结构和算法都具备一些固定的性质。你的程序具备了这些性质,就在一定层面上(这里是运行时)具备了秩序。数据结构和算法的秩序,就是你的代码“美”的体现;2. 紧接着就是代码的可约性。也就是你的逻辑是不是可以再化简的,一个等式越化简越接近结果,一段代码越化简越接近本质。你实现的基本算法和数据结构,每一行代码都是必须的吗?如果能够化简,说明逻辑是可约的。如果你能保证代码再简单不过了,你就对自己代码有了自信;3. 普适性。一段代码是否可以适用于多种类型的输入,比如泛型算法;4. 对称性。对称性看的往往不是代码逻辑,而是代码本身。最典型的,平移对称。处在同一层次上的所有函数/类的命名、注释风格相同,内部相似(不是相同)逻辑顺序相同,那么可以认为具备平移对称。对称性的好处不仅仅是代码好看,它通常意味着管理一处代码的经验可以不经改变的应用到另一处。从代码阅读/重构,到用正则对代码做静态分析,再到抽象出程序库或者框架,都依赖于这种平移对称。除了代码外,系统本身也有对称性。代码或系统的对称性和可维护性通常是正相关的。一段代码或者系统能够保证的性质越多,也就是越具备秩序。就越给人以“美”感觉。相反,如果自己写出来的代码不能保证秩序,就会给他人甚至自己以“丑”的感觉。没有秩序的代码,也就是混沌代码。不断发现和学习更多的性质,并练习如何在代码里保证这些性质,就是将代码由“丑”,变“美”的过程。