【问题标题】:Using Reference VS getReference multiple calls to the same object使用 Reference VS getReference 多次调用同一个对象
【发布时间】:2013-05-22 12:40:56
【问题描述】:

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

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

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

因为第一种情况需要导入Document,所以第二种情况不需要,同时第二种情况需要多次调用getDoc(),所以第一种情况不那么可读性和功能性更好

【问题讨论】:

    标签: java coding-style code-design


    【解决方案1】:

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

    根据getDoc() 的实现,性能可能会或可能不会成为问题。不过,第一种使用方式(使用doc)至少与第二种使用方式一样快。

    【讨论】:

      【解决方案2】:

      因为第一种情况需要导入文档,所以第二种情况不需要

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

      不过,我会使用第一个版本有两个原因:

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

      【讨论】:

      • 其实不需要导入,因为Document已经导入到User
      • @YouYou 哦,您的意思是实际的import 声明?我也不会太在意...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2015-01-28
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多