【发布时间】:2014-09-30 19:57:11
【问题描述】:
当我开发我的软件时,我倾向于发现自己创建了大量的 ThingyHelper.java、FooHelper.java、BarHelper.java 等。我数了数,在我正在从事的当前项目中,有类似的东西超过 40 个类看起来像这样:
public final class FoobarHelper {
// Prevent instantiation
private FoobarHelper() {throw new AssertionError();}
public static void doSomething() {}
public static int foobar() {}
// And many more
}
我的问题是:将所有这些类合并成一个巨大的 Helper.java 类是个好主意吗?环顾四周,似乎没有关于这个主题的任何内容。我的看法是:
我应该这样做,因为:
- 我不必记住它在哪个助手类中。(是 FooHelper 还是 BarHelper?)
- 只是方便。我不必决定新的辅助方法是否值得拥有自己的辅助类,或者它是否适合现有的 40 个辅助类之一。
- 如果我创建了一个新的辅助方法,并认为它值得拥有自己的辅助类,我可能会在剩下的时间里度过“嘿,在这个新类中 foobar() 会不会更好?”
- 如果 #3 为真,其他程序员会说“foobar() 到底去了哪里?它不在 FoobarHelper 中!”
是否有帮助类的约定,或者如果没有,这会是一个糟糕的主意吗?
【问题讨论】:
-
你为什么要创建这么多帮助类?这已经表明您的代码设计可能有问题。
-
在创建这么多辅助类时,您应该真正考虑一下您的代码。
-
我怀疑这个问题可能会因为过于广泛/基于意见而接近。有些人会说是合并它们,其他人不会。其他人仍然会说为什么您根本没有任何助手或只合并相关的助手; JDK 库有 Objects、Arrays、Bits、Collections 等。在一天结束时,试一试,看看什么对你来说最易读和可维护。
-
凝聚力。这就是工作原理。如果将任何实用程序方法合并到一个类中,它们之间是否会有凝聚力?
标签: java helper convention