Sonar抱怨变量声明。我们可以使用“_”吗?

时间:2016-03-23 09:15:20

标签: java sonarqube naming-conventions

private String producer_queueName = "cn";
  

名称'consumer_queueName'必须匹配模式'^ [a-z] [a-zA-Z0-9] * $'。

使用_有什么问题? Java不允许您对任何变量使用_吗?

我想使用_。我怎样才能摆脱这个错误:

must match pattern '^[a-z][a-zA-Z0-9]*$'. 

3 个答案:

答案 0 :(得分:6)

这只是Sonar的一个警告,告诉你你不符合java标准。在Java中,将camelCase用于私有变量是标准的。 _应仅用于静态最终变量。

例如:

//Conforming private variable with camelCase
private String producerQueueName = "cn";

//Conforming private static final variable with "_"
private static final String PRODUCER_QUEUE_NAME = "cn";

Sonar并没有告诉您,无法做做您正在做的事情,只是因为您没有遵守标准。这可能会让其他人更难阅读您的代码。

有关Java命名约定的更多详细信息,请参阅here

如果您要在Sonar中禁用规则,则需要在正在使用的质量配置文件中禁用该规则。有关如何执行此操作的文档,请参阅here

答案 1 :(得分:1)

声纳消息不是错误。

基本规则是一种最佳实践,但不是每个人都同意所有这些规则。每个团队应该讨论哪些规则很重要,哪些规则应该停用。

对于这个特殊的规则,我认为大多数Java程序员会认为这是一个重要的规则,因为(正如stjepano已经提到过的)这是Java命名约定的一部分(例如,带有变量名称的首字母小写的camel case,camel第一个字母大写为类名等的案例。这使得阅读其他人的代码变得更加容易。

答案 2 :(得分:0)

enter image description here

如果您遇到这种类型的错误 ^[a-z][a-zA-Z0-9]*$,您应该做的是重命名没有 Characters 的变量,例如 _

对于这种情况,它将是:

private String producerQueueName = "cn";