在我的工作场所,目前似乎有一场反对静态类的运动。我能理解其中的一部分,他们确实打破了整个单元测试模块化的事情。但是,我看到大量要求删除静态类的代码审查。
一个常见的情况是一个实用程序类,它被 spring 注入(inject)了一些在编译时“已知”的其他对象。它没有其他成员变量。如果类 M 正在调用这个静态类,我总是看到建议使这个实用程序类成为非静态类并将其注入(inject)类 M。
这对我来说没有意义。我没有特别看到它有什么问题,除了它似乎是在浪费时间并且使实用程序类不那么容易使用。据我所知,理由通常是单元测试,但我不喜欢必须更改有效代码以符合测试范例的想法。诚然,模拟一个简单的静态实用程序类可能有点矫枉过正。
静态类是否适合此用例,还是最好避免使用?
最佳答案
我认为这两种方法的差异很小,但只要类不包含状态,将其设为静态会稍微好一些。假设我在 A 类中有这段代码:
StaticClass.utilMethod()
如果我想在 B 类中使用此代码,我可以复制并粘贴。而已。没有添加成员变量,注入(inject)等cmd-c cmd-v。
考虑到您现有的代码使用静态类并进行修改,因此最好继续使用静态类。
关于spring - 如果该类不包含状态,使用非静态类是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907532/