代码之家  ›  专栏  ›  技术社区  ›  Nick Heiner

对于采取条件操作的方法,什么是好的命名约定?

  •  19
  • Nick Heiner  · 技术社区  · 14 年前

    假设我有办法, Foo() 是合适的,由方法决定 ShouldFooNow() . 然而,很多时候程序必须考虑 在这个时候是合适的。所以与其写:

    if ShouldFooNow():
       Foo()
    

    在任何地方,我只是把它变成一个函数:

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

    这个方法的好名字是什么?我很难想出一个好的会议。 IfNecessaryFoo() 很尴尬,尤其是 名字比较长。 DoFooIfShould() ? 更尴尬的是。

    什么样的名字风格更好?

    4 回复  |  直到 14 年前
        1
  •  21
  •   Michael Petrotta user3140870    14 年前

    我觉得你很接近。将action/intent放在方法名的前面,以便于按字母顺序搜索。如果我写这样的东西,我会考虑

    FooIfNecessary()
    FooIfRequired()
    

    比如说,

    ElevatePermissionsIfNecessary()
    
        2
  •  2
  •   David    14 年前

    我最近开始使用约定:

    FooIf(args, bool);
    

    其中args是该方法接受的任何参数,bool需要布尔值或解析为布尔值的某种Func。然后,在这个方法中,我检查bool并运行逻辑。把这些断言保持在一行,在我看来是干净的。

    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);
    

    (打电话的人可能不对,但你明白了。。。我眼前没有代码。)

        3
  •  1
  •   Niels van der Rest    14 年前

    你可以用 EnsureFoo() .

    EnsurePermissions() 如果需要,我们将采取适当的行动。如果权限已经正确,该方法将不会执行任何操作。

        4
  •  0
  •   Mariano Desanze    5 年前

    迈克尔·彼得罗塔的回答( IfNecessary IfRequired IfNeeded .

    ElevatePermissionsIfNeeded()
    

    如果你想要更短的,我会考虑前缀 May Might :

    MayElevatePermissions()
    MightElevatePermissions()
    
        5
  •  0
  •   Daniel Dror    3 年前

    我看不出原始代码有什么问题:

    if shouldFoo():
      Foo();
    

    不仅如此,它还明确区分了决定采取行动与行动本身的关系。

    https://softwareengineering.stackexchange.com/a/161754/262009