在 Java 中,给定以下类:
public class MyClass {
private final Dependency dependency;
public MyClass(Dependency dependency)
{
this.dependency = dependency;
}
public void doWork()
{
// validate dependency...
}
doWork 方法需要调用一个使用dependency
的方法。
以下两种变体中的哪一种被认为是“最佳实践”,为什么?
// Access dependency directly
void validateDependency()
{
this.dependency.something();
}
// access dependency as passed to the method
void validateDependency(Dependency dependency)
{
dependency.something();
}
我发现自己更喜欢后者,将依赖项直接传递给方法,因为它使方法更容易单独测试(尽管是勉强的)。
但是,我对此处的 Java 约定/最佳实践感兴趣。
最佳答案
类的存在是因为你有状态和与该状态耦合的操作。没有充分的理由将该状态的一部分作为参数传递给类方法。
事实上,它会向我表明那 block 状态实际上不应该属于这个类。或者该方法不属于该类。
使用参数“以便更容易进行单元测试”很好地表明后者成立(该方法不应在类中)。
关于Java 风格/最佳实践 - 将字段传递给方法与直接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4441365/