什么是该采取行动的条件方法很好的命名约定?

问题描述 投票:19回答:4

比方说,我有一个方法,Foo()。有只有某些时候Foo()为宜,作为由该方法ShouldFooNow()确定。然而,有些时候程序必须考虑,如果Foo()是在这个时候适当的许多倍。因此,而不是写:

if ShouldFooNow():
   Foo()

无处不在,我只是使成一个功能:

def __name():
    if ShouldFooNow():
       Foo()

什么是这种方法的好名字?我有一个很难拿出一个好习惯。 IfNecessaryFoo()是尴尬的,特别是如果Foo()有一个较长的名称。 DoFooIfShould()?更尴尬。

这将是一个更好的名字风格?

language-agnostic naming-conventions
4个回答
18
投票

我觉得你非常接近。把动作/意图的方法名头,更容易字母搜索。如果我写这样的事情,我会考虑

FooIfNecessary()
FooIfRequired()

说,例如,

ElevatePermissionsIfNecessary()

1
投票

我最近开始使用的约定:

FooIf(args, bool);

凡ARG游戏的方法需要和布尔要么期待一个布尔值或某种解析为一个布尔值的函数求任何参数。然后,该方法中,我检查布尔和运行的逻辑。保持这样的断言下降到一个线看上去干净给我。

例如在记录我的C#代码:

public void WarnIf<T>(T value, string message, Func<T, bool> isTrue)
{
  if (isTrue(value)) _log.Warn(message);
}

然后,我会像调用它:

WarnIf(someObject, "This is a warning message to be logged.", s => s.SomeCondition == true);

(呼叫者可能是不正确的,但你的想法......我没有在我面前的代码现在。)


0
投票

你可以使用EnsureFoo()

例如,如果所需要的方法将EnsurePermissions()采取适当的行动。如果权限已经是正确的,该方法不会做任何事情。


0
投票

迈克尔Petrotta的答案(IfNecessaryIfRequired后缀)是不错的,但我更喜欢一个较短的选择:IfNeeded

ElevatePermissionsIfNeeded()

如果你想要的东西,甚至更短,我会考虑像MayMight前缀:

MayElevatePermissions()
MightElevatePermissions()
© www.soinside.com 2019 - 2024. All rights reserved.