Java 中的私有帮助程序方法与公共静态实用程序方法
我有一个Java类,它变得越来越长。当我通过代码质量工具运行它时,我会被标记为类中的行数。
这是一个下层类,由上层与Spring的.该类有很多非静态的私有实例方法。它们不使用任何实例字段,只处理方法参数。@Autowired
我可以像在某个单独的实用程序类中那样安全地移动这些方法吗?缺点是什么?public static
我有一个Java类,它变得越来越长。当我通过代码质量工具运行它时,我会被标记为类中的行数。
这是一个下层类,由上层与Spring的.该类有很多非静态的私有实例方法。它们不使用任何实例字段,只处理方法参数。@Autowired
我可以像在某个单独的实用程序类中那样安全地移动这些方法吗?缺点是什么?public static
“错误”的心态在这里。
你不会因为工具抱怨这个或那个而返工你的类。
你想提高你的源代码的质量;这些工具可以帮助识别“值得思考的话题”。你把他们的反馈当作暗示;不是“订单”。
因此,您不必担心类中的“代码行”。相反,您担心此类的责任。含义:行号计数本身不是问题 - 但违反单一责任原则是问题。
因此:你退后一步,看看你的班级到底在做什么。当它显然在做不止一件事时,你会把这些方面提取到其他类中!
意思是:如果你真的发现所有这些代码“属于”该类的责任;然后把它放在那里。不要开始将内部实现细节放入不相关的帮助程序类中;只是因为某些工具警告您行数。
另一方面,将私有方法转换为受静态/包保护的东西将允许您对这些方法进行单元测试。这可能是一个优势。但正如所说:只要我们谈论的是实现细节,他们就应该保持私密;无论如何,它们都不应该进行单元测试。
长篇代码:了解并理解“干净代码”是什么;并尝试遵循那里概述的想法。
方法的划分应该按目的/应用程序/逻辑(您可以命名它),而不是按技术属性。
一个长源代码可以分成几个小规模的类,每个类都有自己单独的目的/责任。