【问题标题】:If condition naming convention如果条件命名约定
【发布时间】:2020-03-06 09:26:33
【问题描述】:

我有一个布尔函数来检查扫描数据键是否有效。我将其命名为:

areScandataKeysValid()

对于命名约定,应该将其命名为 isScandataDataKeysValid() 还是像我上面所做的那样?在 Clean Code book 中,我只看到了 is 版本的示例。所以,我很困惑哪一个有意义?从语法上讲,“are”是肯定的。

【问题讨论】:

  • 这种命名约定不是通常只适用于 getter 吗?例如如果属性是布尔值,则 getProperty 变为 isProperty,但您不会期望任何返回布尔值的方法都以 is
  • 相关类的名称是什么?

标签: java boolean coding-style naming-conventions


【解决方案1】:

isName() 约定是 JavaBeans 标准的一部分,适用于布尔值属性。

  • 如果您的 API 不需要与 JavaBeans 兼容,则可以忽略约定。

  • 如果您检查扫描键的方法不打算用作“属性”的 getter,则 isName() 约定不适用。

由于语法不和谐,我同意您对 areScandataKeysValid 的偏好,而不是 isScandataKeysValid。还有其他选择可以考虑;例如

  • hasValidScandataKeys 用于谓词,或
  • validateScandataKeyscheckScandataKeys 用于(通常)抛出异常以指示无效的方法。

我不知道有任何支持上述任何一项的书面约定(即样式指南)。 (没有什么说“好的语法”是必不可少的。)

底线:您的选择。

【讨论】:

    【解决方案2】:

    我认为“是”或“是”是多余的。最重要的是谓词函数的最后一个词是形容词。因此,我将方法命名为 scanDataKeysValid,或者如果从类的上下文中可以清楚地看到,则简单地命名为 keysValid

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 2010-09-22
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2012-09-12
      • 2023-03-03
      相关资源
      最近更新 更多