Coding style 命名约定:如何命名返回布尔值的方法?
我在C#中有一个接口,可以帮助从服务器上的自定义存档中检索数据。界面如下所示: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
public interface IRetrieveData
{
bool OkToRetrieve(SomeData data); // Method in question...
bool RetrieveToLocal(SomeData data);
}
此接口由将数据检索到本地数据库的客户端实现。有不同风格的客户端可以访问彼此的数据。因此,当处理组件在实际检索之前调用IRetrieveData.OkToRetrieve
时,调用将转到客户端代码,在那里决定是否检索数据
此时,客户端可以返回false,跳过该数据段,或者返回true,处理组件调用retrievetocol
并将数据发送给客户端,然后由客户端对其进行处理
我感到困惑的是,是将方法OkToRetrieve
重命名为justRetrieve
还是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建议的那样。这是最好的答案,因为该名称准确地描述了该方法返回的信息。这是一种推荐,而不是一种能力。