你不会需要它(YAGNI, You Ain’t Gonna Need It)
该原则的目的是消除所有冗余代码,并专注于当前而不是未来的功能需求。代码越少,需要维护的代码越少,同时引入BUG的可能性也越小。
有关YAGNI的更详细信息,请参阅Martin Fowler撰写的相关文章Yagni-https://martinfowler.com/bliki/Yagni.html。
不要自我重复(DRY,Don’t Repeat Yourself)
DRY原则基于的理念是,重用而不是复制以前编写的代码。这样的好处是需要维护的代码更少,并确信使用的代码是可行的。另外,这还有助于在代码中发现新的抽象层级。
有关DRY的更详细信息,请参阅https://en.wikipedia.org/wiki/Don%27t_repeat_yourself。
保持简单(KISS,Keep It Simple and Stupid)
KISS原则指出,越简单的东西越能实现其功能。
有关KISS的更详细信息,请参阅https://en.wikipedia.org/wiki/KISS_principle(访问不了的话,请参阅KISS原则_百度百科)。
奥卡姆剃刀原则(如无必要,勿增实体)
奥卡姆剃刀原理是一个哲学原则,而非软件工程原则,但它依然使用于软件设计工作。这个原则与前一个原则极其相似,其主要推论如下:
如果你有两个或多个类似的解决方案,选择最简单的。
— 奥卡姆的威廉
有关奥卡姆剃刀原理的详细信息,请参阅https://en.wikipedia.org/wiki/Occam%27s_razor(访问不了的话,请参阅奥卡姆剃刀原理_百度百科)。
SOLID
SOLID由Robert C. Martin发明的一个首字母缩写,涵盖5个面向对象编程的基本原则。通过遵守这5个原则,开发人员更有可能打造卓越、持久和易于维护的应用程序。5个原则如下:
- 单一指责原则(SRP,Single Responsibility Principle):一个类应该只有一个导致它需要修改的原因。
- 开-闭原则:类应该对扩展是开放的,对修改是封闭的。这个原则最初由Bertand Meyer提出。
- 里氏替换原则:类应该能够被扩展它的类替换。这个原则由Barbara Liskov提出。
- 接口分离原则:提供多个具体接口胜过提供单个通用接口。
- 依赖倒转原则:类应依赖于抽象而不是实现,这意味着类必须专注于做什么而不是如何做。
总结
前四个原则是TDD思维的核心,因为它们旨在简化代码,而最后一个原则专注于类的编写和依赖关系。
无论在测试驱动开发还是非测试驱动开发中,这些原则都适用也必须遵守,因为它们让代码更容易维护,还将带来其他好处。有关如何正确应用这些原则需要大量的学习和实践。
参考资料
- 《Java 测试驱动开发》- Viktor Farcic, Alex Garcia 著,第5章,第1节, P83