使用 TDD 方法并避免 Java 静态方法

jak*_*ack 4 methods tdd static

我刚刚收到了一些关于求职 Java 编码练习的反馈。他们不喜欢反馈中提到的解决方案和两个问题(我非常感谢,因为给出的反馈非常少):

  • 显然,我没有使用 TDD 方法。
  • 我过度使用静态方法,我知道静态方法是反面向对象的,但我只在验证和 util 类型方法中使用它们。

所以这里有两个问题:

不使用 TDD 方法的可能迹象是什么?

什么编码风格或模式可以替代静态方法?

在前两个回答之后,我还有另一个问题。

您是否同意使用静态方法仅在限制代码的可测试性时才不好,而不是在它们本身不好时。

那么回到我的工作申请练习解决方案,如果静态方法不限制我的代码的可测试性,它仍然不好使用吗?我的验证方法非常简单 'Validator.notNull(p,"paramName")' 现在我为什么要嘲笑它?

非常感谢。

Ola*_*laf 5

不使用 TDD 的一个明显标志是协作者使用静态方法和静态类成员。您不能覆盖静态方法,因此您不能用模拟来单独使用此类方法来测试类。

您可以使用依赖注入,而不是在协作者上使用静态协作者或静态方法。在一个简单的编码练习中,您将通过构造函数或手动通过 setter 注入依赖项。在现实生活中,您可以使用可用的依赖框架之一。