使用Reference VS getReference对同一对象进行多次调用

时间:2013-05-22 12:40:57

标签: java coding-style code-design

我想问一下以下哪种情况更好:

import com.x.x.x.Document;
.
.
Document doc=user.getDoc();
MyFile file=Converter.getFile(doc.getFile());
MyTheme theme=Converter.getTheme(doc.getTheme());

OR

MyFile file=Converter.getFile(user.getDoc().getFile());
MyTheme theme=Converter.getTheme(user.getDoc().getTheme());

由于第一种情况需要导入Document秒,并且同时第二种情况需要多次调用getDoc(),所以首先不要这样做,这样才能获得更好的可读性&功能

2 个答案:

答案 0 :(得分:3)

第一种样式,带有本地doc,是优越的,主要是因为它的可读性:如果getDoc()返回相同的实例,代码的读者就不必猜测(或阅读文档)多次通话,并确保您在完全相同的实例上进行通话。

性能可能是也可能不是问题,具体取决于getDoc()的实施情况。但是,第一种使用方式(使用doc)至少与第二种使用方式一样快。

答案 1 :(得分:1)

  

由于第一种情况需要导入文档第二次不

不确定您的意思:在两个示例中,您都需要引用文档。这两个示例在功能和性能方面相同(假设getDoc只是一个getter)。

然而,我会使用第一个版本有两个原因:

  • 我发现它比连续方法调用更具可读性
  • 如果您的用户为null,您将在Document doc = user.getDoc();上获得一个NPE,因此很明显(在第二个示例中,如果您在MyFile file = Converter.getFile(user.getDoc().getFile());上获得NPE,则可以要么是用户,要么是null的文档。