Java 风格/最佳实践 - 将字段传递给方法与直接访问

标签 java

在 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/

相关文章:

java - 圆形阵列环路,检测

java - 在java中使用instanceof Void

java - 为什么接口(interface)方法不能是 "static"& "final"?

java - 从android中的另一个线程更新ui

java - JDBCexecuteUpdate() 仅插入 1 行

java - 尝试为 Keycloak 创建自定义身份 validator 提供程序时,来自 Maven 部署的 NoClassDefFoundError

java - 有没有办法在 java 语言(非 native )JVM 代理中启用 "native method prefix"功能?

java - String 实例上的调用格式

java - 即使在添加 def 后,外部 "C"也会给出错误 "Linkage specification is not allowed"。在头文件中?

java - Android 警报接收器从未触发