【问题标题】:Why java method name should not contain underscore?为什么java方法名不应该包含下划线?
【发布时间】:2014-05-10 14:56:20
【问题描述】:

我正在使用 PMD 来检查 Java 编码违规。 我正在编写自动化测试用例,并给出这样的方法名称:

public void testCaseMethod_4_2_16(){
   //some implementation 
}

其中 4_2_16 是测试用例编号 4.2.16

当我检查 PMD 违规时,它显示 方法名称不应包含下划线,并且此违规显示为 blocker 根据PMD 规则。 所以这是我的问题:

  • 为什么方法名称不应包含下划线被定义为 blockerPMD 错误
  • 我们应该避免什么样的 PMD 违规和
  • 我们应该尝试修复什么样的违规行为?

就我的理解而言,至少我们应该避免 PMD 显示的前两级违规。 任何有关 PMD 规则的帮助将不胜感激。谢谢

【问题讨论】:

  • 我不知道为什么,虽然我总是使用 camelcase 表示方法,而 underscores 表示变量。为什么?所以更容易区分变量和方法。
  • @Vallentin 方法末尾的大括号还不够吗?
  • @Vallentin 变量中的下划线仅适用于FINAL_VARIABLE_NAMES!除此之外,它“只是”一个约定(原始命名约定文档已消失,但请参阅docs.oracle.com/javase/tutorial/java/javaOO/methods.html 示例)
  • 但我认为如果我将测试用例编号作为 4_2_16 放在方法的末尾而不是只写 4216,它会给我们更多关于测试用例的信息
  • @Marco13 “最终变量”通常被称为“常量”(在 Java 中)。

标签: java pmd


【解决方案1】:

这是一个已经设定的标准,以便人们可以轻松地阅读彼此的代码,从而使代码更易于维护。

以下引用来自 Oracle 网站Java code conventions

  • 80% 的软件生命周期成本用于维护。

  • 几乎没有任何软件由原作者终生维护。

  • 代码约定提高了软件的可读性,使工程师能够更快、更彻底地理解新代码。

【讨论】:

  • +1 表示 80% 的生命周期成本。这是关于软件的最聪明的说法之一
【解决方案2】:

Java 更喜欢 camelCase 表示法。 Java code conventions 说你应该尽量避免方法或变量名中的下划线。

在您的情况下,PMD 的默认优先级失败。这条规则应该是“不错的”级别,但绝对不是阻碍问题。

我建议您使用SonarQube,它对 PMD 的规则进行了重新排序,在大多数情况下效果更好。您找到的规则仅处于主要级别(低于级别拦截器和严重)。

如果您对结果仍然不满意,您可以使用SourceMeter plugin for SonarQube,它还具有不同的(可能更好)PMD 规则的优先级。

【讨论】:

    【解决方案3】:

    虽然有很多意见,但我喜欢将生产质量保证和测试代码分开。

    如果由于某种原因无法做到这一点,我宁愿停用(大部分)测试代码的警告。我认为不值得花时间让测试代码漂亮(并且方法名称中的下划线对我来说只是样式),而对未打开的生产代码有严重警告。

    【讨论】:

    • 是的,我告诉审阅者应该忽略它。但他的问题是为什么它被声明为 blocker 你应该有一个正当的理由。
    • 有两个原因:1)它是测试代码 2)它只是关于样式。这些对我来说是合理的论点,而且我还定期进行代码审查。如果 PMD-default 是“blocker”,则它被错误地归类为 IMO。 (想检查 PMD 主页上的默认值,目前无法访问...)
    • 但是那是他们给出的规则集,如果我要更改他们的PMD规则集,是否可以更改默认规则集,并根据我们的使用进行修改.然后检查 PMD 违规有什么用。
    【解决方案4】:

    在命名标识符时允许使用下划线。我不知道为什么 PMD 显示违规,但您可以停用警告并继续。在命名标识符时,Java 中允许使用 UNDERSCORE。

    我认为它可以帮助你...

    【讨论】:

      猜你喜欢
      • 2013-04-30
      • 2020-06-25
      • 2013-02-07
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      相关资源
      最近更新 更多