如何确定构造函数的参数

How to decide parameters of a constructor

我有一个 class 构造函数接受上下文作为参数。使用上下文派生其他属性。

我的问题是我应该将这些属性作为构造函数的参数传递还是使用 Context 派生它们。

示例:

class A (val context:Context){

  val someOtherClass = SomeOtherClass(context)
  val derivedValue = someOtherClass.deriveValue

}

你应该给 class 它完成工作所需的东西,而不是更多。在 class 的范围之外导出 class 需要的参数。构造函数的工作应该只是变量初始化(最好是私有最终字段)。

如果您有一些参数(someOtherClass、derivedValue),则将它们直接传递给构造函数。如果您有很多,而不是 Context 对象,请创建您自己的对象,使其不直接依赖于上下文。这样您就可以根据测试需要相对容易地模拟它,并且它与您的上下文对象分离。