我经常在指定我的方法时遇到困难。例如,现在我有一个比较两个哈希的静态方法,我坚持使用它的名字。 HashesEqual(string h1, string h2)
? AreHashesEqual(string h1, string h2)
?你的版本更好?这是一般性的问题 - 我有很多这样的东西。是否有任何权威来源我可以阅读有关命名约定的内容?
答案 0 :(得分:3)
来自MSDN上的Names of Type Members:
确定方法名称是动词或动词短语。通常,方法对数据起作用,因此使用动词来描述方法的操作使开发人员更容易理解方法的作用。在定义方法执行的操作时,请注意从开发人员的角度选择一个提供清晰度的名称。不要选择一个动词来描述该方法的作用;换句话说,不要使用方法名称的实现细节。
使用肯定短语命名布尔属性(CanSeek而不是CantSeek)。或者,您也可以使用Is,Can或Has为布尔属性添加前缀,但仅限于添加值的位置。
我认为其他人会同意任何命名约定都是好的,只要它有意义并且你一直使用它。
或者,考虑为提供此功能的string
类创建扩展方法。然后你可以简单地做:
var equal = h1.EqualsHash(h2); // or similar, based on the naming you choose
或编写一个自定义Hash
类,在内部保留散列值,并覆盖/重载其Equals
方法和==
/ !=
运算符,让步对此:
var h1 = new Hash("string1");
var h2 = new Hash("string2");
var equal = h1 == h2;
// or
var equal = h1.Equals(h2);
或者让您的实用工具类独立(例如HashUtil
或其他东西),并将“哈希”一词完全保留在其方法之外:
var equal = HashUtil.AreEqual(h1, h2);
答案 1 :(得分:1)
我建议所有开发人员阅读.NET Design Gudelines(链接是关于类型成员的特定部分)。在你的实例中,因为返回类型也是一个布尔值,我建议你尝试类似:
IsHashEqual(string testHash)
答案 2 :(得分:1)
.Net Framework Guidelines提供的唯一方法名称建议是方法
请给出动词或动词短语的方法名称
我认为Are
有资格作为“动词短语”并且可以在这里工作。
在这种情况下,虽然你没有定义新的东西,而是一个完善的模式的特定形式:等于。鉴于我的倾向是将函数作为Equals的前缀,以便它在Intellisense,Search等功能中显示接近等于......
EqualHashes(string p1, string p2)