È convenzionale denominare le variabili locali finali / costanti in UPPER_SNAKE_CASE?

5

Semplice, ho un metodo:

public final void myMethod(User user, Group group) {
    final int MAX_USERS_PER_GROUP = group.getMaxUsersPerGroup();
    int usersInGroup = 0;

    // Get users in group and all subgroups, recursively

    if (usersInGroup > MAX_USERS_PER_GROUP) {
        throw new Exception(...);
    }
}

Ma secondo Eclipse:

This name is discouraged. According to convention, names of local variables should start with a lowercase letter.

La mia preoccupazione è che questo verrà contrassegnato come codice errato, anche se è considerato come costante da tutti gli account e dovrebbe essere formattato come tale.

    
posta NobleUplift 09.04.2015 - 17:51
fonte

2 risposte

11

Il codice e le convenzioni di denominazione per Java sono abbastanza ben stabiliti. In particolare, questo (o la sua mancata corrispondenza) può essere visto in Sezione 9 - Convenzioni di denominazione

The names of variables declared class constants and of ANSI constants should be all uppercase with words separated by underscores ("_"). (ANSI constants should be avoided, for ease of debugging.)

static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;

Il punto chiave è che questa è una variabile nel codice di esempio. Quello che hai dato il suggerimento ad altri codificatori che una volta assegnato non può essere cambiato - ma è non una costante. Inoltre, non è una costante classe .

public final void myMethod(User user, Group group) {
    final int MAX_USERS_PER_GROUP = group.getMaxUsersPerGroup();
    int usersInGroup = 0;

    // Get users in group and all subgroups, recursively

    if (usersInGroup > MAX_USERS_PER_GROUP) {
        throw new Exception(...);
    }
}

Questo non sarebbe corretto secondo gli standard di denominazione.

Potresti voler controllare il check-in in esecuzione. Le convenzioni di denominazione verificano che ciò sia conforme alle convenzioni di denominazione Java.

Il controllo della variabile finale locale è:

LocalFinalVariableName
    local, final variables, including catch parameters
    ^[a-z][a-zA-Z0-9]*$

Inizia con una minuscola e non include i caratteri di sottolineatura. Naturalmente, il tuo team potrebbe variare da questo standard Java e modificare le regole del checkstyle per assicurarti di seguire tutti la stessa convenzione, anche se confonderai altri codificatori Java che guardano il codice.

    
risposta data 09.04.2015 - 18:15
fonte
2

Le costanti sono cose date valori conosciuti prima o durante la compilazione.

Ciò che hai dichiarato è una variabile perché il suo valore è determinato in fase di esecuzione richiamando un metodo. Il fatto che sia final è in realtà solo una comodità per far sapere al compilatore che una volta impostato il valore, non verrà modificato.

    
risposta data 09.04.2015 - 18:18
fonte

Leggi altre domande sui tag