2011-05-30 144 views
6

如果以前有人問過,並且很難想象它沒有,但是它沒有明顯的關鍵字關聯,所以很難檢查。'Get'方法名稱應該包含參數的名稱嗎?

如果我有像GetByCode(string code)GetByCodeAndResourceType(string code, string resourceType)幾個標準方法C#類,我應該只是將其重命名爲一個重載Get(...),因爲它們是由參數列表區分?

很明顯,可能會出現不同目的需要使用同一個方法簽名的情況,但除了我不能看到需要單獨的方法名稱的情況外,只要智能感知有適當的註釋。

我很想知道任何人認爲是利弊。

回答

6

如果它們都做同樣的事情(或返回相同的值)但接受不同的輸入,那麼通過重載參數來區分這些輸入會更好。如果他們做了什麼或返回有什麼不同,那麼我會使用不同的名字。

命名上的差異的另一個原因可能是性能,或另一個不明顯的特徵(例如,一個重載比另一個重載慢得多)。這可以在文檔中詳細說明,但提供不同的名稱會引起更多關注。

3

我們傾向於使用單詞Find而不是Get,而且我們使用方法名稱中的參數名稱。

正如您指出的那樣,會出現這樣的情況,即參數類型不提供唯一簽名。這就是爲什麼我們選擇長名稱是因爲它是一致的。

+1

+1是的,一致性很重要 – 2011-05-30 01:54:14

3

我覺得應該明白一種方法的特徵。方法簽名由其名稱,返回類型及其參數組成。因此,重複名稱中的任何這些組件(例如,GetByName(string name)List<string> GetNames*List*(..))是完全多餘的。