Java私有方法签名清晰度和更好的实践

PST*_*PST 5 java code-readability

我收到了以下代码段的代码审核评论 -

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);
}
Run Code Online (Sandbox Code Playgroud)

审查建议 -

  1. SomeService service = getService();应该在内部进行调用doMoreWork以便签名清晰.所以签名变得doMoreWork(a, b)更清楚易懂.

我的问题 -

由于doMoreWork()发生在循环中,我将服务对象传递给它.doMoreWork()只是代码中的私有逻辑单元,将"service"作为方法参数进行处理应该没问题.这种方法永远不会公开.这种情况下的指导原则是什么?这里的清晰度或可读性如何受到影响?

(注意 :

  1. getService()调用没有太多性能开销,因此性能不是我的标准.
  2. 服务注入不是一种选择.它需要以样本中显示的方式获取.
  3. doMoreWork()不只是调用service.doingMoreWork().它有一些预先步骤可以遵循.

)

Moh*_*ala 0

由于建议是正确的,您只需要方法Service中的对象doMoreWork。因此,最好Service仅在doMoreWork执行操作的方法中获取对象。

如果在 后添加更多语句loop,则Service对象将持续很长时间,直到其作用域存在(直到}未遇到关闭),它不会被垃圾收集,因此您应该调用getService()doMoreWork在 中传递 2 个参数doMoreWork(a,b)。会更容易理解。