2011-06-17 120 views
4

這些類型的方法一直困擾着我。如果不仔細查看代碼,我不知道這本字典中應該包含什麼樣的關鍵或子值。我確信,我自己做了大約一千次。但它一直困擾着我,因爲它缺乏這麼多的信息。從方法返回字典

IDictionary<int,HashSet<int>> GetExportedCharges() 
{ 
    ... 
} 

void GetVisitStatuses(IDictionary<int,HashSet<int>> exportedCharges) 
{ 
    ... 
} 

讓字典中的材料很有意義,但所有的IDictionary方法都有非常抽象的參數。我想我可以創建一個新類,實現IDictionary,並重命名所有參數。它只是看起來像矯枉過正。令人期待c#有一個'typdef'指令。

如何避免返回這樣的字典?或者你完全避免這種情況?

+0

你應該具有良好的方法和參數的命名和大量的意見,特別是通過智能感知可以使用XML文檔註釋信息間隙填充。 – juharr 2011-06-17 13:37:06

+0

@juharr - 總的來說,我完全同意。在我看來,在這種情況下,這兩個方法簽名之間的差距可能太大,以便xml文檔覆蓋。一個與另一個關聯的唯一方法是通過一個類似命名的參數(幸運的是)。我絕對喜歡這裏的新類型的想法。 – TBone 2011-06-17 14:10:06

回答

9

有一個非常簡單的解決方案,你可能會發現足夠的:

public class IdToSetOfWidgetNumbersMap : Dictionary<int,HashSet<int>> { } 

優點:

  • 看到返回一個IdToSetOfWidgetNumbersMap不會留下許多問題開
  • 類能的方法留空,或者您可以選擇爲Dictionary公開的會員提供別名

缺點:

  • 您需要創建一個什麼都不做類爲每種類型的字典
+0

我喜歡這個解決方案。我想我可能會把字典作爲一個私人成員,只是暴露別名的方法。最後,比我想要做的更多的工作只是爲了獲取別名參數名稱。但是,我認爲寧願編寫更多的材料,比繼續做我的例子中的材料更清潔。謝謝! – TBone 2011-06-17 13:57:44

0

的個人而言,我不避免返回字典。

我同意,只有方法簽名它看起來很模糊。所以我的規則是總是以「字典(鍵的邏輯描述) - (值的邏輯描述)」風格寫入註釋。並希望我不會需要使用一些可怕的事情像

Dictionary<SomeType, <Dictionary<...>>