我經常在指定我的方法時遇到困難。例如,現在我有一個比較兩個哈希值的靜態方法,並且我堅持使用它的名稱。 HashesEqual(string h1, string h2)
? AreHashesEqual(string h1, string h2)
?你的更好的版本?這是一個通用的問題 - 我有很多這樣的東西。有沒有任何權威來源可以閱讀有關命名約定?平等方法 - 命名約定
回答
從Names of Type Members MSDN上:
做給方法是動詞或動詞短語的名字。通常,方法對數據起作用,因此使用動詞來描述方法的動作可以使開發人員更容易理解該方法的作用。在定義該方法執行的操作時,請小心選擇一個能夠從開發人員角度提供清晰的名稱。不要選擇描述該方法如何做的動詞;換句話說,不要使用您的方法名稱的實現細節。
使用肯定語句(CanSeek而不是CantSeek)來命名布爾屬性。(可選)您也可以在Is,Can或Has的前面添加布爾屬性,但只能添加值。
我認爲其他人會同意,只要有意義,並且您一貫使用它,任何命名約定都是好的。
或者,請考慮爲提供此功能的string
類創建擴展方法。然後,你可以簡單地做:
var equal = h1.EqualsHash(h2); // or similar, based on the naming you choose
或者編寫自定義Hash
類,內部保存的哈希值,並覆蓋/超載的Equals
方法和==
/!=
運營商(S),讓位給這樣的:
var h1 = new Hash("string1");
var h2 = new Hash("string2");
var equal = h1 == h2;
// or
var equal = h1.Equals(h2);
或者讓你的實用類獨立(如HashUtil
或東西),並保持單詞「散」了它的方法(S)的全部:
var equal = HashUtil.AreEqual(h1, h2);
另請參閱:Guidelines for Names
因此,根據引用的第2部分,我的方法的通用名稱是'AreHashesEqual',開頭是'Are',我正確嗎? – Denis
@Denis:我認爲這是可以接受的,是的。 –
我建議所有開發人員閱讀.NET Design Gudelines(鏈接是關於類型成員的具體部分)。在您的實例,因爲返回類型也是一個布爾值,我建議你嘗試類似:
IsHashEqual(string testHash)
而在我的方法有兩個參數的情況下,名稱必須是'AreHashesEqual',對吧? – Denis
由.Net Framework Guidelines提供的唯一方法名稱的建議是,方法應該是
請給方法名稱是動詞或動詞短語
我認爲Are
確實有資格作爲「動詞短語」,並會在這裏工作。
在這種情況下,儘管您沒有定義新的東西,而是定義良好的模式的特定形式:Equals。鑑於我的傾向將前綴等於功能,使其接近像智能感知,搜索等功能的Equals顯示出來......
EqualHashes(string p1, string p2)
- 1. 方法命名約定
- 2. 語法糖方法的命名約定
- 3. RoR命名約定的方法?
- 4. Objective C方法命名約定
- 5. 回購方法命名約定
- 6. SOAP Web服務方法命名約定
- 7. Objective-C的命名約定方法
- 8. Java方法命名約定和重載
- 9. 目標C方法的命名約定
- 10. DAO方法的標準命名約定
- 11. 可可方法的命名約定
- 12. 服務方法的命名約定
- 13. Python布爾方法命名約定
- 14. 命名約定的實例和方法
- 15. WCF擴展方法的命名約定
- 16. 命名約定
- 17. CodeRush命名約定
- 18. 命名約定和語法
- 19. Ruby命名約定?
- 20. 命名約定
- 21. mysql命名約定
- 22. .NET測試命名約定
- 23. MvvmCross命名約定
- 24. 命名約定DependencyProperty.RegisterAttached
- 25. MySQL命名約定
- 26. URL命名約定
- 27. BEM:命名約定
- 28. Protobuf命名約定
- 29. TSQL命名約定〜這個命名約定叫什麼名字?
- 30. Linq2sql命名約定
是的,有權威人士透露,在[MSDN]( http://msdn.microsoft.com/en-us/library/vstudio/ms229045%28v=vs.100%29.aspx)。不幸的是,尋求第三方資源通常是SO的主題。 –