Coding style 命名约定:如何命名返回布尔值的方法?

Coding style 命名约定:如何命名返回布尔值的方法?,coding-style,naming-conventions,Coding Style,Naming Conventions,我在C#中有一个接口,可以帮助从服务器上的自定义存档中检索数据。界面如下所示: public interface IRetrieveData { bool OkToRetrieve(SomeData data); // Method in question... bool RetrieveToLocal(SomeData data); } 此接口由将数据检索到本地数据库的客户端实现。有不同风格的客户端可以访问彼此的数据。因此,当处理组件在实际检索之前调用IRetrieveDat

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

public interface IRetrieveData
{
    bool OkToRetrieve(SomeData data); // Method in question...
    bool RetrieveToLocal(SomeData data);
}
此接口由将数据检索到本地数据库的客户端实现。有不同风格的客户端可以访问彼此的数据。因此,当处理组件在实际检索之前调用
IRetrieveData.OkToRetrieve
时,调用将转到客户端代码,在那里决定是否检索数据

此时,客户端可以返回false,跳过该数据段,或者返回true,处理组件调用
retrievetocol
并将数据发送给客户端,然后由客户端对其进行处理

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

有人有什么建议吗

IsRetrievable()

我认为一个返回布尔值的方法应该被命名为yes-no问题。

始终命名布尔方法,其名称类似于可以回答yes或no的问题


在你的情况下,CanRetrieve将是一个好名字(仅使用你自己的建议)。

CanRetrieve听起来不错。我已经看到了在微软API中使用的Can-stem。IMO唯一的另一个实物期权是可计量的(来自Aziz),这在某种程度上似乎过于语言扭曲了

如果要进行更多检查,而isRetrievable()不合适,则可以使用:

IsValid()

根据函数和方法应该是动词的惯例,我更喜欢isOKToRetrieve或isRetrieveOK而不是没有“is”的变体。

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

CheckIsRetrievable(SomeData data)

在这种情况下,我可能会将其命名为:

public bool IsReady (SomeData)

因为它更清楚地演示了一旦返回
true

将发生什么,那么使用前缀'should'怎么样

ShouldRetrieve(SomeData data);

取决于您的用例。我喜欢用“是”、“做”或“能”等词作为前缀:
IsSomePropertySoAndSo
不支持功能
,例如
CanVerb

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


IsRetrievable()
更为模糊,如果除了权限之外还有其他考虑因素,这可能更合适。

在命名约定中,方法名称应该是动词。通常,方法/函数指示动作,因此它们应该以动词作为前缀。e、 检查、获取、制作等

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


我认为这两个惯例的结合将导致一个非常好的、有洞察力的模式。所以getIsRetrievable()或checkIsRetrievable()对我来说会很好。

我喜欢
部分,但仅仅因为它是可检索的并不意味着可以检索它。我会称之为绝对的isoktoretrive。“Is”前缀是我们团队的一个编码标准。我要补充的是Ariz的答案(这是一个nitnoi),就是要区分函数正在检查什么。。。是数据是否可检索,或当前代码是否可检索,或是否应更正数据,等等。例如,如果函数正在检查数据的有效性并“在数据通过某组条件时授权检索,则IsComplete()或IsValid,或IsTransactionallyConsistent,或者,描述为“通过”而进行的检查的性质的内容可能会更具信息性。@bpayne UHHHH您将如何使用“is”来表示shelf.HasProducts()或body.ContainsKnife()之类的内容?mxmissile:我将调用这些方法
isEmpty()
(如果shelf有限制,
isFull()
)我永远不会创建一个
containsKnife()
方法,而是创建一个接受参数的
contains()
方法。是的,
contains()
是is规则的一个例外。“is”是一个动词……它取决于“is”这个词的含义。@MarcelLamothe“is”不是一个像“check”或“collect”这样的动作,而是一个状态。
if(IsRetrievable(data))
imho比
if(CheckIsRetrievable(data))
。我认为if子句是布尔返回函数最常用的地方。我真的不喜欢在方法的前缀处检查。听起来有点多余
can
!=<代码>应该
。客户代码不会阻止您检索它,只是推荐而已,因此我认为,
ShouldRetrieve
是一个更好的名称,正如@dannie.f建议的那样。这是最好的答案,因为该名称准确地描述了该方法返回的信息。这是一种推荐,而不是一种能力。