Perché dovrei inserire una virgola finale?
Non è necessario. Sospetto che Sonar dovrebbe mostrare un avvertimento lì.
Dipende dalla preferenza del programmatore ciò che preferisce. L'aggiunta di una virgola finale alla fine dell'array semplifica la rimozione o l'aggiunta di una voce successiva dall'array.
Quindi, se si dispone di una matrice come:
String[] arr = new String[] {
"abc",
"def",
"ghi",
}
Aggiunta di una voce semplicemente richiede di aggiungere che l'ingresso con trailing virgola alla fine della matrice. Senza virgola, devi prima aggiungere una virgola, quindi l'elemento.
E la rimozione di un elemento richiede solo di rimuovere quella linea contenente quell'elemento. O semplicemente commentando quella linea.
String[] arr = new String[] {
"abc",
"def",
// "ghi", // This won't cause any error
}
Se trailing virgola non è stato consentito, quindi se si rimuove l'ultimo elemento, si dovrebbe andare a togliere la virgola prima troppo. Bene, so che questa ragione è abbastanza assurda. Ma è permesso.
Questo è molto utile per i generatori di codice durante la generazione del codice per l'inizializzazione dell'array. Possono semplicemente continuare ad aggiungere elementi con la virgola finale nella matrice, senza preoccuparsi se si tratta dell'ultimo elemento.
Facciamo un esempio:
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");
considerare se una virgola finale non è stato permesso, allora come quel codice sarà simile. Dovresti gestire l'ultimo elemento separatamente. Quindi, sta solo facendo del bene ai generatori di codice.
Nel mio scenario, Sonar Qube mostra "virgola finale" in Blocker e non come Avviso. –