驱动设计:TDD与SOLID原则
1. 单一职责原则在测试中的应用
单一职责原则(SRP)不仅有助于我们组织代码,还能帮助我们组织测试。每个测试应该只测试一件事,可能是一个单一的正常流程或者一个单一的边界条件。这样做能让我们更轻松地定位故障。当某个测试失败时,由于它只关注代码的一个方面,我们就能很容易地找到存在缺陷的代码。基于此,每个测试只包含一个断言的建议也就顺理成章了。
有时候,一组对象可以以多种不同的方式进行协作。对于这样的对象组,为每种配置编写一个单独的测试通常会更好。这样我们会得到多个更小、更易于处理的测试。这是将SRP应用于对象组的每个配置的一个例子,通过为每个特定配置编写一个测试来实现。
2. 依赖倒置原则(DIP):隐藏无关细节
依赖倒置原则(DIP)允许我们将代码拆分成相互独立变化的组件,这自然会引出SOLID原则中的开闭原则(OCP)。依赖倒置(DI)意味着我们编写的代码应该依赖于抽象,而不是具体细节。与之相反的情况是,两个代码块中一个依赖于另一个的具体实现,这样一个代码块的更改会导致另一个代码块也需要更改。
下面是一个反例,展示了应用SRP后的 Shapes
类代码:
package shapes;
import java.util.ArrayList;
import java.util.List;
public class Shapes {
private final List<Shape> allShapes = new ArrayList<>();
public