gpt4 book ai didi

java - Checkstyle 建议不可能的常量排序

转载 作者:行者123 更新时间:2023-11-30 07:08:06 28 4
gpt4 key购买 nike

我有几个共享一个公共(public)片段的长字符串常量(static final 变量)。该片段本身没有任何意义,因此我将其声明为“private static final”。

例如:

private static final XML_H = "<?xml ....";
public static final DOC_1 = XML_H + "<tag....";
public static final DOC_2 = XML_H + "<tag....";

现在我收到来自 checkstyle 的警告

Variable access definition in wrong order

这来自声明顺序检查规则,即私有(private)应该在公共(public)之后。

如果我将 XML_H 移动到它“应该”所在的位置,代码不会编译,因为在声明它之前无法引用该字段。

对我来说,这似乎是规则中的一个错误,因为这是一个真正的语言限制,没有其他方法可以做到这一点。我认为规则应该将这种情况排除在检查之外。

你们同意吗?或者有什么方法可以改进代码而不会出现问题吗?

最佳答案

你是对的 DeclarationOrder检查不包括你的情况。

这是对该检查的合理限制,因为 Checkstyle 只对源代码起作用,因此没有可用的编译器信息。因此,虽然可以处理您的特定案例,但类似的其他案例会导致运行时类型解析和范围界定问题。换句话说,我真的不希望他们增强 Checkstyle 工具。

为了处理这个问题,您可以将检查的 ignoreModifiers 选项设置为 true,这将告诉 Checkstyle 忽略您的大小写,同时仍然检查方法和构造函数是否出现在字段之后。这应该是合理的。

如果你无法改变规则(即通过公司限制)并且无法说服负责人,那么你可以将私有(private)常量移动到 private static 内部类。这也会使违规行为消失,但当然会使您的代码变得更糟。 (这真的很可悲。)

关于java - Checkstyle 建议不可能的常量排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269659/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com