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

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

public interface IRetrieveData
{
bool OkToRetrieve(SomeData data); // Method in question...
bool RetrieveToLocal(SomeData data);
}

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

此时,客户机可以返回 false,这段数据被跳过或返回 true,处理组件调用 RetrieveToLocal并将数据发送给客户机,然后由客户机处理该数据。

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

有人有什么建议吗?

74779 次浏览
IsRetrievable()

我认为一个返回布尔值的方法应该被命名为“是”——“否”。

始终命名布尔方法,其名称类似于可以回答“是”或“否”的问题。

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

我觉得“可以挽回”听起来不错。我见过微软 API 中使用的 可以干。另外一个真正的选项 IMO 是可检索的(来自 Aziz) ,它在语言学上似乎太扭曲了!

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

IsValid()

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

方法意味着动作。因此,我更喜欢以动词开头的方法名称。这样如何?

CheckIsRetrievable(SomeData data)

在这个特殊的情况下,我可能会命名为:

public bool IsReady (SomeData)

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

使用前缀“应该”怎么样?

ShouldRetrieve(SomeData data);

取决于你的用例,我喜欢在它们前面加上诸如“ is”,“ does”或者“ Can”这样的词: IsSomePropertySoAndSoDoesNounSupportFeature和你的例子 CanVerb

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

IsRetrievable()更加模棱两可,如果除了许可之外还有其他考虑因素,或者除了许可之外还有其他考虑因素,那么 IsRetrievable()可能更加合适。

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

一般来说,方法/函数指示操作,所以它们应该以动词作为前缀,例如 check、 get、 make 等。

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

我认为这两种惯例的结合将导致一个非常好的、有辨别力的模式。因此,getIsRetreiable ()或 checkIsRetrievable ()对我来说看起来相当不错。