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

ash*_*tee 41 coding-style naming-conventions

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

public interface IRetrieveData
{
    bool OkToRetrieve(SomeData data); // Method in question...
    bool RetrieveToLocal(SomeData data);
}
Run Code Online (Sandbox Code Playgroud)

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

此时,客户端可以返回false并跳过该数据或返回true,处理组件调用RetrieveToLocal并将数据发送到客户端,然后客户端处理它.

当我越来越困惑是是否要重命名的方法OkToRetrieve,只是Retrieve或者CanRetrieve或留作OkToRetrieve.

有没有人有任何建议?

Azi*_*ziz 62

IsRetrievable()
Run Code Online (Sandbox Code Playgroud)

我认为返回布尔值的方法应该被命名为是 - 否.

  • 我喜欢`is`部分,但仅仅因为它是可检索的并不意味着它可以检索它.我称之为`isOKToRetrieve` (9认同)
  • mxmissile:我会调用那些方法`isEmpty()`(如果架子有一个限制,`isFull()`)我永远不会做一个`containsKnife()`方法,而是``contains()`方法接受参数.是的,`contains()`是is规则的一个例外. (3认同)
  • 绝对地。“Is”前缀是我们团队的编码标准。 (2认同)
  • ALl我想添加TO Ariz的答案,(这是一个nitnoi)是区分函数正在检查的内容......是否可以检索数据,或者当前代码是否可以检索它,或者是否应该重新获取它等等,例如,如果函数正在检查数据的有效性,并且"当数据通过某些条件时授权检索,则IsComplete()或IsValid,或IsTransactionallyConsistent,或描述的内容正在进行的"通过"检查的性质可能会提供更多信息. (2认同)

eKe*_*ek0 19

Allways命名布尔方法,其名称类似于可以回答的问题是或否.

在你的情况下,CanRetrieve将是一个好名字(只是为了使用你自己的建议).


dan*_*e.f 13

如何使用前缀'should'?

ShouldRetrieve(SomeData data);
Run Code Online (Sandbox Code Playgroud)


Meh*_*ras 7

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

CheckIsRetrievable(SomeData data)
Run Code Online (Sandbox Code Playgroud)

  • "是"是一个动词...... (17认同)
  • 这取决于"是"这个词的含义是什么. (5认同)
  • 我真的不喜欢在方法的前缀处使用“check”。听起来有点多余 (5认同)
  • 我喜欢这个,因为这意味着您可以编写变量名称而不遮盖函数名称:`const isRetrievable = checkIsRetrievable(SomeData data)` (3认同)
  • @MarcelLamothe“是”不隐含诸如“检查”或“收集”之类的动作,而是隐含状态。 (2认同)
  • `if(IsRetrievable(data))` 恕我直言,读起来比 `if(CheckIsRetrievable(data))` 好得多。我认为 if 子句是布尔返回函数最常用的地方。 (2认同)

Noo*_*ilk 6

在这个特定情况下,我可能会命名它:

public bool IsReady (SomeData)
Run Code Online (Sandbox Code Playgroud)

因为它更清楚地表明一旦它返回会发生什么true.


arv*_*man 6

取决于您的用例.我喜欢在前面加上"是","确实"或"可以"等字样 IsSomePropertySoAndSo,DoesNounSupportFeature并作为例子CanVerb


小智 5

通常,方法/功能指示动作,因此应在其前加上动词。例如检查,获取,制造等。

布尔变量的通用命名约定是在其前面加上帮助动词,例如is,do,will,can

我认为这两个约定的结合将导致一个很好的,可识别的模式。所以getIsRetreivable()或checkIsRetrievable()对我来说看起来不错。