带有警告"100"的CheckStyle是一个幻数

moh*_*een 6 java checkstyle

在我的代码中,它显示警告,消息"100"是一个幻数.参见下面的代码,

int randomNo = generator.nextInt(100);
Run Code Online (Sandbox Code Playgroud)

我在这里读到了什么是一个神奇的数字,为什么它不好?但我怀疑通过创建变量与静态将声明100会占用更多空间,因为我在一个地方使用它.这是一个正确的方法来解决这个问题吗?

  public static final int HUNDRED= 100;
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

yur*_*rib 16

HUNDRED确实是有点儿傻,但你为什么要选择100,什么是它的意义?

就像是:

public static final int RANDOM_UPPER_LIMIT=100;
Run Code Online (Sandbox Code Playgroud)

或者更具信息性的东西,取决于你使用的价值:

public static final int MAX_NUMBER_OF_COLORS=100;
Run Code Online (Sandbox Code Playgroud)

会更有意义并提高可读性.

在这种情况下,不应考虑节省空间,声明变量的空间开销(如果存在)完全可以忽略不计.


Bil*_*l K 6

它与存储无关,它具有可读性.如果你想改变一些数字,很难在代码中找到它,如果它在顶部,那么它会更好(如果它在配置文件中,在许多情况下更好).

是的,这是一个很好的解决方案.

如果你不需要它在那个文件之外,你应该把它变成"私有",你可能想要更具可读性并使用一个名称来表明它的真正含义,例如:

MAX_RANDOM_NUMBER=100
Run Code Online (Sandbox Code Playgroud)

更好的是包括它的用途

MAX_RANDOM_FOR_CARD_SELECTION
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

这样,当你从现在起5个月后查看该文件因为你添加了20张新卡时,你甚至不用看代码即可完全改变.