Eclipse - 提取具有类似变量名的常量时的错误建议

问题描述 投票:0回答:1

我在java代码中使用Eclipse Neon,

当我想在具有变量名称的情况下提取常量以获取示例字符串值"subject"

String subject = "subject";

当Extracting Eclipse为我提供SUBJECT2虽然我没有SUBJECT常数。它似乎受现有变量名称的影响。

我可以指示Eclipse建议我SUBJECT,因为它是独一无二的吗?

我没有找到这样的问题,可以将这个bug报告给eclipse吗?

编辑

当从以下提取"subject"时,它建议SUBJECT

p.put("subject", "mySubject");

(不同的代码)当从下面提取"subject"时它建议SUBJECT2

String subject = null;
p.put("subject", "mySubject");

编辑2

只是添加@howlger评论,即使主题变量没有有效最终,仍然建议SUBJECT2

String subject = null;
p.put("subject", "mySubject");
subject = "notFinal";
java eclipse constants
1个回答
1
投票

Eclipse为常量建议了一个唯一的名称,它不等于忽略其他常量的大小写,也包括其他变量,参数和字段。这是出于代码约定的原因,不仅是为了避免编译器错误。

在给定的例子中String subject = "subject";有两种情况:

  • 如果subject是隐式最终的,则在将“subject”提取为常量之前内联subject
  • 如果subject不是隐式最终的,因为稍后分配了不同的值:要么提取的常量的名称应该更具体(例如SUBJECT_DEFAULT),要么更通用的变量名称。

在这种情况下,我喜欢Eclipse为名称添加后缀的事实。但在我看来,还有其他情况可以提出更好的建议(不幸的是,这也意味着更复杂)。下面是一个示例,根据调用Extract to constant的位置,提出不同的提议:

public void foo(String subject) {
    System.out.println("subject"); // -> private static final String SUBJECT2 = "subject";
}

public void bar() {
    System.out.println("subject"); // -> private static final String SUBJECT = "subject";
}

这个问题已经报告给Eclipse(further improvements can be reported to Eclipse JDT, to the component UI here):

© www.soinside.com 2019 - 2024. All rights reserved.