Java样式/最佳实践 - 将字段传递给方法直接访问

Mar*_*itt 8 java

在Java中,给出以下类:

public class MyClass {
   private final Dependency dependency;
   public MyClass(Dependency dependency)
   {
       this.dependency = dependency;
   }

   public void doWork()
   {
       // validate dependency...
   }
Run Code Online (Sandbox Code Playgroud)

doWork方法需要调用使用的方法dependency.

以下哪两种变体被认为是"最佳实践",为什么?

   // Access dependency directly
   void validateDependency()
   {
        this.dependency.something();
   }

   // access dependency as passed to the method
   void validateDependency(Dependency dependency)
   {
       dependency.something();
   }
Run Code Online (Sandbox Code Playgroud)

我发现自己偏爱后者,将依赖项直接传递给方法,因为它使得该方法更容易单独测试(虽然是边缘).

但是,我对这里的java约定/最佳实践很感兴趣.

Ano*_*non 11

存在一个类,因为您具有与该状态耦合的状态和操作.将该状态的一部分作为参数传递给类方法是没有充分理由的.

事实上,它会向我表明,这片国家不应该属于这个阶级.或者该方法不属于该类.

使用参数"以便更容易进行单元测试"是后者保持的一个很好的指示(该方法不应该在类中).