【发布时间】:2015-05-07 05:32:56
【问题描述】:
我收到以下代码 sn-p 的代码审查评论 -
public void doWork(String a, Integer b) {
..
..
SomeService service = getService();
for (Integer i : numbers) {
doMoreWork(a, b, service);
}
}
private void doMoreWork(String a, Integer b, SomeService service) {
...
...
...
service.doingMoreWork(a, b);
}
审查建议 -
-
SomeService service = getService();应在doMoreWork内调用,以便签名清晰。所以签名变成了doMoreWork(a, b),这更容易理解。
我的问题 -
由于doMoreWork() 在循环中发生,我将一个服务对象传递给它。 doMoreWork() 只是代码中的一个私有逻辑单元,将“服务”作为方法参数携带应该没问题。这种方法永远不会公开。这种情况下的指导方针是什么?此处的清晰度或可读性如何受到影响?
(注意:
-
getService()调用的性能开销并不大,因此这里的性能不是我的标准。 - 这里不提供服务注入选项。需要按照示例中显示的方式获取。
- doMoreWork() 不仅仅是调用 service.doingMoreWork()。它有一些要遵循的前置步骤。
)
【问题讨论】:
-
如果这是真正的代码,我会内联“doMoreWork”,我不明白为什么你需要一个方法在这里(它是 1 LoC)
-
我现在已经编辑了示例代码。 doMoreWork() 正在做更多的工作!
-
我提出了这个问题,以了解该建议背后的最佳实践甚至事实。这是我从书本上找不到的,所以我把它贴在这里。我不确定它是否真的是“持有”的候选人。即使是回应也是合理的,而不仅仅是基于意见。
标签: java code-readability