2013-05-22 36 views
1

只要我想問的是下列情況較好:使用參考VS getReference多次調用同一個對象

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秒沒有按」 t並且同時第二次需要多次呼叫getDoc()首先並不這樣哪個更好可讀性&功能性

回答

3

的第一個樣式,與當地doc,優越,主要是它的可讀性:你的代碼的讀者不會有猜測(或閱讀文檔)如果getDoc()返回上多次調用同一個實例,請確保您在完全相同的實例上進行呼叫。

根據getDoc()的執行情況,性能可能會也可能不會成爲問題。儘管如此,第一種使用方式(與doc)至少與第二種使用方式一樣快。

1

由於第一種情況下,需要導入文件第二不

不知道你的意思:在這兩個例子中,你需要你的文檔的參考。這兩個示例在功能和性能上都是相同的(假設getDoc僅僅是一個吸氣器)。

我會使用,無論第一個版本的原因有兩個:

  • 我覺得比連續方法更可讀的調用
  • 如果你的用戶是null,你會得到線Document doc = user.getDoc();一個NPE所以它會顯而易見(在第二個示例中,如果您在MyFile file = Converter.getFile(user.getDoc().getFile());上獲得NPE,則可能是用戶或空文檔)。
+0

其實它不需要導入,因爲**文檔**已經導入**用戶**類 – YouYou

+1

@YouYou哦,你的意思是一個實際的'導入'聲明?我也不會太在乎這個...... – assylias