方法名称以“Does”开头看起来不错吗?

时间:2011-05-04 17:32:29

标签: c# naming-conventions naming

使用“Does”(在C#中)启动方法名称是一个好习惯吗?这对我来说有点奇怪,所以我想得到你的意见。

我正在编写一种方法,检查帐户是否存在,签名是否存在 “bool DoesAccountExist(id)”?有更好的名字吗?

谢谢!

7 个答案:

答案 0 :(得分:34)

在这种情况下,我个人会使用AccountExists(id),因为它在if块中看起来更自然

if (AccountExists(id)) { }

答案 1 :(得分:20)

对于任何返回布尔值的方法,我们总是使用Is,所以在这种情况下我们会调用方法

IsExistingAccount(id)

答案 2 :(得分:4)

我通常不使用Do,只使用AccountExists(id)。

对我而言,稍后在代码中看起来更自然:

if(AccountExists(id))
{
    ValidateLogin();
}

替代方案如下:

if(!DoesAccountExist(id)) {}

对我来说似乎很奇怪。我会读到,好像帐户不存在?哪个少了帐户就不存在了。

答案 3 :(得分:2)

“Is”前缀成语有助于阐明Array“Empty”之类的方法,这可能意味着“清空数组”或“数组为空?”。如果一直使用“IsEmpty”显然是bool返回,按照惯例,“Empty”变为清空行为。
在问题的背景下,我同意@Andy Whites的第二个建议:

if (IsExitingAccount) ...

这里'Is'触发了bool返回constistant的强大自动含义,其中使用了where(IsEmpty,IsNull等)

答案 4 :(得分:1)

我认为AccountExists是您最好的选择,但另一个选择是:IsExistingAccount。对于返回布尔值的方法或属性,使用命名约定可能很有用,其中方法以单词“is”开头。如果你使用“是”,你将不得不重新定义方法名称的其余部分,以便对读者有意义。

答案 5 :(得分:0)

Can或Is可以像CanCopy一样使用,或者IsAccountExists也可以。遵循预定义的约定使代码更具可读性坦率地说,前缀对我来说也有点奇怪。

答案 6 :(得分:0)

另一种选择是使用标准的C#复数Is,Any。

AnyAccountsExist(id)