2011-12-20 179 views
4

對不起,這樣一個模糊的標題。沒有想到好的一個。編碼實踐 - 我應該使用哪種編碼方法?

現狀:

  1. 具有用戶對象的列表。
  2. 需要爲UserInfo對象創建數組。
  3. UserInfo對象是根據User對象中的信息創建的。 (目前有這方法)

哪種情況比較好?

  1. 我是否應該將用戶到用戶的整個列表傳遞給UserInfo轉換方法。
  2. 或者我應該循環用戶列表並將每個用戶對象傳遞給轉換方法並獲取UserInfo。

實例:

List<User> users = .....; 
UserInfo[] userInfos = getUserInfoFromUser(users); //(conversion method will loop and generate array, then return it.) 

List<User> users = .....; 
UserInfo[] userInfos = new UserInfo[users.size()] 
for (int j = 0; j < users.size(); j++) { 
    userInfos[j] = getUserInfoFromUser(users.get(j)); 
} 

在第一種方法中,我們通過一個大對象(用戶的列表)作爲參數,並在第二我們稱之爲相同的方法多個times.Which更好?

用戶列表的大小範圍是25-200個對象。

+0

在第一個版本userInfos = getUserInfosFromUsers(用戶)沒有。 get(j) – 2011-12-20 09:30:15

回答

5

一下怎麼樣,需要一個User並返回轉換方法,一個一個UserInfo(這可以,而且也應該是UserInfo一個構造函數),以及一個採用一個List,請問循環和內部調用第一一?

列表大小不相關。

+0

+1對產品開發很有幫助 – Vaandu 2011-12-20 09:32:04

+0

我同意 - 列表方法現在更方便使用並減少膨脹,但單一的''User'方法更模塊化,並且如果您的要求改變或延長。 – OpenSauce 2011-12-20 09:34:40

0

我更喜歡第一種方法,因爲它很簡單,而且參數將是users對象的地址。所以在這種情況下,無論大小都不重要。

0

在這兩種情況下,Java都會將引用傳遞給對象。在第一種情況下,它是對用戶集合的引用,對第二種情況是對用戶的引用。

0

我會推薦使用第一個選項:傳遞整個數組!

減少函數調用次數肯定會有所收益。

0

沒有區別:在第一個版本中,函數實現將執行第二個版本。此外可能還想有一個User - > UserInfo函數。

2

我認爲這取決於你會這樣做的頻率,因爲你不想在你的代碼中的多個地方重複相同的循環。

我建議建立兩種方法,一種返回爲單個用戶和信息這對於用戶的列表返回信息的其他:

public UserInfo[] getInfoForUsers(List<User> users) { 
    UserInfo[] userInfos = new UserInfo[users.size()]; 
    for (int j = 0; j < users.size(); j++) { 
     userInfos[j] = getInfoForUser(users.get(j)); 
    } 
    return userInfos; 
} 

public UserInfo getInfoForUser(User u) { 

}