关于编码样式:命名约定:如何命名返回布尔值的方法?

Naming Conventions: What to name a method that returns a boolean?

我在C中有一个接口,可以帮助从服务器上的自定义存档中检索数据。界面如下:

1
2
3
4
5
public interface IRetrieveData
{
    bool OkToRetrieve(SomeData data); // Method in question...
    bool RetrieveToLocal(SomeData data);
}

此接口由将数据检索到本地数据库的客户端实现。有不同类型的客户机可以访问彼此的数据。因此,当处理组件在实际检索之前调用IRetrieveData.OkToRetrieve时,调用将转到客户机代码,在该代码中决定是否应检索数据。

此时,客户机可以返回假数据,跳过该数据块或返回真数据,处理组件调用RetrieveToLocal,并将数据发送给客户机,然后由客户机进行处理。

我感到困惑的是,是将方法OkToRetrieve重命名为仅Retrieve还是CanRetrieve,还是将其保留为OkToRetrieve

有人有什么建议吗?


1
IsRetrievable()

我认为返回布尔值的方法应该命名为"是-否"问题。


Allways用类似于可以回答"是"或"否"的问题的名称命名布尔方法。

在您的情况下,canretrieve将是一个好名字(只是使用您自己的建议)。


使用前缀"应该"怎么样?

1
ShouldRetrieve(SomeData data);


取决于您的用例。我喜欢在它们前面加上"is"、"do"或"can"等词:IsSomePropertySoAndSoDoesNounSupportFeature,以CanVerb为例。


在这个特定的案例中,我可能会把它命名为:

1
public bool IsReady (SomeData)

因为它更清楚地说明了一旦返回true会发生什么。


方法意味着行动。因此,我更喜欢方法名以动词开头。怎么样?

1
CheckIsRetrievable(SomeData data)


如果您正在进行更多检查,并且isretrievable()不合适,可以使用:

1
IsValid()

通常,方法/函数表示动作,因此它们应该以动词作为前缀。例如检查、获取、制作等。

布尔变量的常见命名约定是在它们前面加上帮助动词,例如is、do、will、can。

我认为这两个约定的结合将产生一个非常好的、有辨别力的模式。所以getIsRetrievable()或checkIsRetrievable()对我来说非常好。


在命名约定中,方法名应该是动词


在函数和方法应该是动词的惯例下,我更喜欢isoktoretrieve或isretrieveok而不是没有"is"的变体。


我听上去很好。我见过微软API中使用的can-stem。唯一的另一个真正的选择IMO是可行的(从阿齐兹),这似乎太语言扭曲了!


如果结果由用户的权限/访问决定,那么MayRetrieve()可能是更好的名称。

IsRetrievable()更加含糊不清,如果除了许可之外还有其他考虑,或者除了许可以外,可能更为合适。