本书之前提到的各种保持代码整洁的原则及方法,归纳起来只有简单设计的四条。只要遵循这四条原则,设计就能变得简单。
- 运行所有测试
- 不可重复
- 表达程序员的意图
- 尽可能减少类和方法的数量
以上规则重要程度依次降低。
1. 运行所有测试
设计必须制造出如预期一般工作的系统,这是首要因素。全面测试并持续通过所有测试的系统,就是可测试的系统。
只要系统可测试,就会导向保持类短小且目的单一的设计方案。遵循SRP的类,测试起来较为简单。测试编写越多,就越能持续走向编写较易测试的代码。
紧耦合的代码难以编写测试。同样,编写测试越多,就越会遵循DIP之类规则,使用依赖注、接口和抽象等工具尽可能减少耦合。如此一来,设计就有长足进步。
2. 简单设计规则2~4: 重构
有了测试,就能保持代码和类的整洁,方法就是递增式地重构代码。测试消除了对清理代码就会破坏代码的恐惧。
重构过程,就可以应用有关优秀软件设计的一切知识。提升内聚性,降低耦合度,切分关注面,模块化系统性关注面,缩小函数和类的尺寸,选用更好的名称,如此等等。这也是应用简单设计后三条规则的地方:消除重复,保证表达力,尽可能减少类和方法的数量。
3. 不可重复
重复是拥有良好设计系统的大敌。它代表着额外的工作、额外的风险和额外且不必要的复杂度。
4. 表达力
容易理解的代码更容易维护。
选用好名称、保持函数和类尺寸短小、标准命名法、编写良好的单元测试。
5. 尽可能少的类和方法
消除重复、代码表达力和SRP等最基础的概念也会被过度使用。为了保持类和函数短小,我们可能会造出太多的细小类和方法。所以这条规则也主张函数和类的数量要少。
我们的目标是在保持函数和类短小的同时,保持整个系统短小精悍。