2011-02-01 51 views
0

當面對一個具有多個類似方法的類在不同參數類型下操作時,是否在方法名中包含某種參數描述,或者您保持名稱相同並相信參數本身提供了足夠的信息?對比下面給出的兩個例子:方法命名:包含或排除具有多個類似方法的參數類型

interface Option1 { 
    update(ObjectA); 
    update(ObjectB); 
    update(List<Object>); 
} 

interface Option2 { 
    updateA(ObjectA); 
    updateB(ObjectB); 
    updateAll(List<Object>); 
} 

我聽說過以下參數:

  • 選項1是更好,因爲它不包含冗餘信息
  • 選項2更好,因爲代碼更易讀並且更易於維護

回答

1

這取決於。存在方法重載是因爲它很有用。但是,它也會導致你的悲傷。

如果你正在考慮超載,考慮:

  • 執行方法解決不同的關切?
  • 可讀性會受損 - 讀者是否能夠判斷哪種方法被調用?
  • 您的界面可能與其他具有類似方法名稱的界面混在一起嗎?
  • 參數是否可能實現多個參數類型?如果是這樣,可能會產生歧義,編譯器可能會要求您解決它。

例如:

  • Java的String.indexOf()超載。所有的超載都有相同的意圖。沒有額外的indexOf()方法混入葉類中。
  • setX()方法通常是而不是所有命名爲set() - 所有上述問題都可以回答「是」。
+0

謝謝,我認爲你的所有觀點都非常直接地回答,除了第二個問題。你將如何去決定可讀性是否會受到損害?如果我可以回到更新的例子,它可能會或可能不會 - 它似乎很大程度上取決於調用類。 – Zecrates 2011-02-02 13:40:59

0

對於支持方法重載靜態類型語言,選項1

對於處理對象層次,選項1

對於所有其他情況,我建議選擇2

我的2美分。 :)

相關問題