简单设计(Simple Design)是Kent Beck在90年代提出的四条设计原则,与SOLID相比,简单设计更容易理解和落地。
按照简单设计原则写出的代码,应该是短小精湛又易读、易维护的。
简单设计可以总结为四条,优先级从高到低:
- 通过测试
- 揭示意图
- 消除重复
- 最少元素
通过测试
如果采用了TDD的开发方式,那么测试反映的既是需求,所以这一条也可以理解成满足需求。无论采用什么样的设计方法,如果最终代码不满足需求,或是测试没过,那么写得再好也没有价值,因此这条是最高优先级。
揭示意图
揭示意图强调的是可读性,良好的代码应该实现代码即注释,尽可能降低代码阅读者理解代码的难度。从变量命名、方法命名表意,到方法的长度适中、类的职责单纯,这一条原则应该始终贯穿到开发的过程中。
消除重复
消除重复意味着尽量降低重复代码出现的概率,语句重复则抽成方法,值重复则抽成常量,否则代码将会难以修改和维护,每次对重复的地方进行修改都得确保别的地方也被改到。
最少元素
这一条意味着在满足上面三条之后,任何多余的元素都应该删除。比如内联后依然很表意的代码,或是删除后别人依然很好理解的注释,甚至是调试代码,这些元素删除后都能减小代码的长度和复杂度,对于可读性和可维护性都有好处,却又没什么损失。
争议
值得一提的是,揭示意图和消除重复的优先级往往会有争议,比如将重复代码抽取成公共方法后,重复消失了,但是可读性也降低了,这种情况在单元测试中很常见。
这实际上更像代码风格一样,算是个人的偏好,所以将这两条排在了同一优先级上。
评论(需梯子)