我用 Java 开发了一个应用程序,我正在重构它。我刚刚意识到我有几个方法执行几乎相同的操作,而且它们的名称也相似:
RestrictedPersonServiceImpl.canViewPersonDetails
RestrictedPersonServiceImpl.isSubjectRestrictedToWorker
RestrictedPersonServiceImpl.isAnySubjectRestricted
RestrictedPersonServiceImpl.isSubjectRestricted
RestrictedPersonServiceImpl.isAnySubjectOfSubgroupRestrictedToWorker
我很确定它必须是一种编程模式才能适用于处理这种情况。我之前想到的解决方案是将所有这些方法合并为一个,并通过参数确定行为。
还有更好的选择吗?
谢谢大家
最佳答案
在大多数情况下,将多个方法合并为一个是一个糟糕的选择。 这里有一些原因。
- 代码应该简单。 if/else 或 switch/case 结构越少越好。这种代码测量称为“分支因子”
- 删除完整方法(如果需要)比删除特定方法的一部分更容易。
- 在 javadoc 中更清晰、更容易解释。此外,在大多数情况下,不需要解释任何内容,因为方法名称会自行解释。
另一种情况是,如果您的所有方法都执行可以由参数控制但没有 if/else 结构的相同操作。例如,addOne()
、addTwo()
等一系列方法是没有用的。在这种情况下,您应该定义方法 add(int value)
完成这项工作。
有时定义一个接受参数的私有(private)方法是有用的,但公开一系列没有参数的公共(public)方法,这些方法用正确的参数调用这个私有(private)方法。当这些方法之间的错误处理存在一些差异,或者如果有多个参数且并非所有组合都合法时,这通常很有用。
关于java - Java中的重构方法: What pattern should I apply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924799/