系统的迭代式演进
1.通过迭进设计达到整洁目的
- 运行所有测试
- 不可重复
- 表达程序员的意图
- 尽可能减少类和方法的数量
- 以上规则按其重要程序排列
2.简单设计原则1:运行所有测试
- 设计必须制造出如预期一般工作的系统,这是首要因素
- 全面测试并持续通过所有测试的系统,就是可测试的系统,不可验证的系统,绝不应该部署上线
- 只要系统可测试,就会导向保持类短小且目的单一的设计方案
- 紧耦合的代码难以编写测试
- 遵循有关编写测试并持续运行测试的简单、明确的规则,系统就会更贴近OO低耦合度、高内聚度的目标,编写测试引致更好的设计
3.简单设计原则2:重构
- 有了测试,就能保持代码和类的整洁,方法就是递增式地重构代码
- 测试消除了对清理代码就会破坏代码的恐惧
- 三条规则:消除重复,保证表达力,尽可能减少类和方法的数量
4.不可重复
1.重复是拥有良好设计系统的大敌
2.极其雷同的代码行当然是重复,还有实现上的重复等其他一些形态
int size();
bool isEmpty();
这两个方法可以分别实现,但可以在isEmpty中使用size消除重复。
bool isEmpty(){
return size()==0;
}
不但是从代码行的角度,也要从功能上消除重复。
3.当我们进行共性抽取的时候违反了SRP原则,所以我们可以把新方法分到另外类中,实现可复用。“小规模复用”可大量降低系统复杂性,要想实现大规模复用,必须理解如何实现小规模复用
4.模板方法模式 是一种移除高层级重复的通用技巧
5.表达力
- 软件项目的 主要成本在于长期维护 ,代码应当清晰地表达其作者的意图
- 可以通过选用 好名称 来表达
- 可以通过保持函数和类尺寸短小来表达,短小的类和函数通常易于命名,易于编写,易于理解。
- 可以通过采用 标准命名法 来表达
- 编写良好的单元测试也具有表达性,测试的主要目的之一就是 通过实例起到文档的作用 。
- 做到有表达力的最重要方式是尝试
6.尽可能少的类和方法
- 类和方法的数量太多,有时是由毫无意义的教条主义导致的,应该采用更实用的手段
- 目标是在保持函数和类短小的同时,保持整个系统短小精悍(优先级最低)
7.总结
这四条规则,其实前面的内容大部分也是围绕这些展开的,也是是作者故意再次对前面的内容做了一次小的总结,并且放在此处,能让我们结合前面多讲的内容对这四条宝贵的经验有一个更深的理解。
8.参考文献
《代码整洁之道》
https://blog.youkuaiyun.com/zhangyunfeihhhh/article/details/106268660
https://www.jianshu.com/p/c44eca6add14
本公众号分享自己从程序员小白到经历春招秋招斩获10几个offer的面试笔试经验,其中包括【Java】、【操作系统】、【计算机网络】、【设计模式】、【数据结构与算法】、【大厂面经】、【数据库】期待你加入!!!
1.计算机网络----三次握手四次挥手
2.梦想成真-----项目自我介绍
3.你们要的设计模式来了
4.一字一句教你面试“个人简介”
5.接近30场面试分享