当前位置: 首页 > 知识库问答 >
问题:

带有警告'100'的CheckStyle是一个神奇的数字

呼延博易
2023-03-14

在我的代码中,它显示消息100的警告是一个神奇的数字。请参阅以下代码,

int randomNo = generator.nextInt(100);

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

  public static final int HUNDRED= 100;

有什么建议吗?

共有3个答案

邴俊民
2023-03-14

最好不要编写最短的代码,而是编写易于理解和维护的代码。将这个100存储为常量,你可以添加一个好名字来解释为什么它真的是100。例如,如果您想要生成随机分数,并且您的最大可能分数是100,那么您可以定义

static final int MAX_SCORE = 100;

之后,你也可以在其他地方使用它。每个人都会明白为什么是100,而不是别的。如果有一天你需要将它更改为200,你将不得不只在一个地方替换它,而不必搜索代码。

此外,在程序的其他部分,可能会有100个具有不同含义(例如,MAX_PERCENT)。如果您想将MAX_SCORE更改为200,但将MAX_PERCENT保持原样,那么如果您有单独的常数,这会容易得多。

尉迟景福
2023-03-14

它实际上与存储无关,而是可读性。如果您想更改一些数字,那么在代码中很难找到,如果它位于顶部,则更好(如果它位于配置文件中,在许多情况下更好)。

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

如果你不需要它以外的文件,你应该使它"私有",你可能想要更可读,并使用一个名称,表明它的真正含义,如:

MAX_RANDOM_NUMBER=100

最好包括它的用途

MAX_RANDOM_FOR_CARD_SELECTION

或者类似的。

这样,当你在5个月后查看该文件时,因为你添加了20张新卡,你甚至不用看代码就可以清楚地看到你必须更改什么。

葛成双
2023-03-14

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

比如:

public static final int RANDOM_UPPER_LIMIT=100;

或者更具信息量的东西,这取决于您将值用于什么:

public static final int MAX_NUMBER_OF_COLORS=100;

会更有意义,提高可读性。

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

 类似资料:
  • 同时将warning的值设置为“all”或,没有任何结果。 checkstyle的文档很差。一些想法?

  • 当我有一个没有javadoc的公共方法时,Checkstyle会发出警告,这很好!当我重写一个公共方法时,我没有得到警告,因为javadoc已经在该方法的父类中可用。 现在,我的方法有了另一个注释,例如MyEvent。现在我确实收到了警告,但我不想要它,因为注释已经足够了。是否可以排除具有特定注释的方法的警告? 有一些解决方案涉及向我的代码中添加诸如或之类的注释,但这并不能使我的代码更好,我可以改

  • 我使用作为Gradle项目中的CheckStyle配置。 但是,我不知道如何让它在我的项目根目录中而不是在默认的路径中查找这个文件。我如何将它指向另一个位置? 如果我设置,它就会满足我的要求,但我们又回到了我不想修改的问题上。 似乎我需要以某种方式设置系统属性,但我不确定在我的Gradle配置文件中的何处进行此操作,或者将其设置为什么。

  • 我使用hikaricp作为我的数据库连接池。当我完成我的SQL语句时,我将关闭连接,在连接上调用关闭,我相信您应该将连接代理返回到池。然而,我看到以下警告(不是错误)消息,我不得不怀疑这是否是一个需要解决的问题,因为我没有正确清理我的连接资源。我不是使用资源尝试,而是使用尝试捕获最后(我在最后关闭连接

  • 我正在使用wordpress插件Ultimate Membership Pro。我的代码中有一个小警告。我想不出问题出在哪里。 我试图检查PHP手册,也做这个主题的研究,但不能解决它。有人知道怎么解决吗?只需要一个提示。 Php代码: 原始代码: 错误: 警告:preg_replace():不再支持 /e修饰符,请在第44行的 /var/www/html/stock-market/wp-conte

  • 下面的代码返回一个错误,它不会连接到SQlite db。 虽然下面的代码工作得很好。 你能帮我了解一下这两个代码之间的区别吗?为什么第一个不能编译?