java - Sonar : Array should contain trailing comma

标签 java eclipse syntax sonarqube

Sonar 向我展示了一个小的工作用语:

- Array Trailing Comma
Array should contain trailing comma.

我的代码包含:

RECOVER_PASSWORD(new String[] {
        RequiredPermissions.USERS_PASSWORD_RECOVER,
        RequiredPermissions.USER_RETRIEVE,
        RequiredPermissions.API_USER_RETRIEVE,
        RequiredPermissions.ONETIMELINK_CREATE,
        RequiredPermissions.API_ONETIMELINK_CREATE,
        RequiredPermissions.PASSWORD_RECOVER,
        RequiredPermissions.API_PASSWORD_RECOVER }),

为什么我应该插入尾随逗号?

最佳答案

Why should I insert a trailing comma?

你不需要。我怀疑 Sonar 应该只是在那里显示警告。

这取决于程序员的喜好,他喜欢什么。在数组末尾添加尾随逗号,可以轻松地从数组中删除或添加任何条目。

所以,如果你有一个像这样的数组:

String[] arr = new String[] {
                  "abc",
                  "def",
                  "ghi",
               }

添加条目只需要您在数组末尾添加带有尾随逗号的条目。如果没有逗号,您需要先添加逗号,然后添加元素。

删除一个元素只需要删除包含该元素的那一行。或者只是注释掉那一行。

String[] arr = new String[] {
                  "abc",
                  "def",  
              //  "ghi",    // This won't cause any error
               }

如果不允许尾随逗号,那么如果您删除最后一个元素,您也必须删除它之前的逗号。好吧,我知道这个理由很荒谬。但这是允许的。


这在生成数组初始化代码时对代码生成器非常有益。他们可以简单地继续在数组中添加尾随逗号的元素,而不用担心它是否是最后一个元素。

举个例子:

StringBuilder array = new StringBuilder();

array.append("int[] arr = new int[] {").append("\n");
for (int i = 0; i < 10; ++i) {
    array.append(i + ",").append("\n");
}
array.append("}").append("\n");

考虑如果不允许尾随逗号,那么该代码会是什么样子。您将不得不单独处理最后一个元素。所以,它只是对代码生成器有好处。

关于java - Sonar : Array should contain trailing comma,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18399422/

相关文章:

sql - DB2级联删除命令?

java - 每5秒用java扫描一个表sql

Java 长到 MySql

java - 在任意事物的列表(数组)中创建关联的最佳方法是什么?

eclipse - 禁用构建时目标的刷新

java - 我无法在 Eclipse 中显示图像

java - JPA 桌面应用程序单个或多个 EntityManager 实例

java - GWT webappcreator 创建 Maven 项目 : the source attachment does not contain the source for the file URLClassPath. 类

scala - Scala 对象定义中没有父类(super class)名称的 "extends {..}"子句有什么作用?

java - 这个通用函数的作用是什么?