Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
已关闭6年。
Improve this question
我收到了以下代码段的代码评论注释-
审核建议-
为了签名清晰,应在
我的问题 -
由于
(笔记 :
在这里不能选择服务注入(inject)。需要以示例中显示的方式获取它。 doMoreWork()不仅与调用service.doingMoreWork()有关。它需要遵循一些前置步骤。
)
那么您将
如果您使用的是像Spring这样的框架,则可以将
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
已关闭6年。
Improve this question
我收到了以下代码段的代码评论注释-
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()只是代码中的私有(private)逻辑单元,可以将“service”作为方法参数使用。这种方法永远不会公开。在这种情况下的指导方针是什么?此处的清晰度或可读性如何受到影响?(笔记 :
getService()
调用没有太多的性能开销,因此此处的性能不是我的标准。 )
最佳答案
如果将doMoreWork()
重构为以下内容:
private void doMoreWork(String a, Integer b) {
SomeService service = getService();
service.doingMoreWork(a, b);
}
那么您将
doMoreWork()
依赖于getService()
来实现其功能。如果您想使用其他方法来获取SomeService
对象,则必须重构该代码。因此,出于这个原因,您可能希望坚持使用原始实现。如果您使用的是像Spring这样的框架,则可以将
SomeService
注入(inject)到您的类中,如下所示:@Autowired
private SomeService service;
// use the injected service here
private void doMoreWork(String a, Integer b) {
service.doingMoreWork(a, b);
}
10-07 22:42