Kent Beck给出了”简单设计”的明确标尺 ,让程序设计者判断和遵守 :
- 通过所有测试(Passes its tests)
- 尽可能消除重复 (Minimizes duplication)
- 尽可能清晰表达 (Maximizes clarity)
- 更少代码元素 (Has fewer elements)
- 以上四个原则的重要程度依次降低。
这组定义被称做简单设计原则。
初看上去,这组原则平淡无奇,似乎是一组耳熟能详的原则的罗列。但只要细细品味,就会发现其精妙绝伦之处。
通过所有测试(需求)
直观的看,这句话貌似在讲测试:一个项目只有具备完善的自动化测试,才算在做简单设计。但事实上并非如此。这里提到的测试,真正的意思是客户验收。如果你的项目通过了客户的所有验收条件(Acceptance Criteria),那就说明你们已经完成与客户约定的全部需求。至于验收方式是靠人工还是靠自动化测试则无关紧要。
所以,这句话强调的是对外部需求——包括功能性需求和非功能性需求——正确的完成。
尽可能消除重复(易重用,易修改性)
重复,意味着低内聚,高耦合。而消除重复的过程,也就意味着是让软件走向高内聚,低耦合,达到良好正交性的过程。重复导致耦合度提高