基本的软件设计原则

你不会需要它(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个原则如下:

  1. 单一指责原则(SRP,Single Responsibility Principle):一个类应该只有一个导致它需要修改的原因。
  2. 开-闭原则:类应该对扩展是开放的,对修改是封闭的。这个原则最初由Bertand Meyer提出。
  3. 里氏替换原则:类应该能够被扩展它的类替换。这个原则由Barbara Liskov提出。
  4. 接口分离原则:提供多个具体接口胜过提供单个通用接口。
  5. 依赖倒转原则:类应依赖于抽象而不是实现,这意味着类必须专注于做什么而不是如何做。

总结

前四个原则是TDD思维的核心,因为它们旨在简化代码,而最后一个原则专注于类的编写和依赖关系。

无论在测试驱动开发还是非测试驱动开发中,这些原则都适用也必须遵守,因为它们让代码更容易维护,还将带来其他好处。有关如何正确应用这些原则需要大量的学习和实践。

参考资料

  1. 《Java 测试驱动开发》- Viktor Farcic, Alex Garcia 著,第5章,第1节, P83

留下评论