È meglio usare "get" come prefisso per i getter?

8

se avessi un valore booleano (proprietà) shouldAutoLogin è meglio dare un nome al getter getShouldAutoLogin o solo shouldAutoLogin in modo che sia più simile all'inglese?

ex:

if(shouldAutoLogin){
    ...
}

o

if(getShouldAutoLogin){
    ...
}
    
posta Mike Bryant 24.07.2013 - 16:45
fonte

5 risposte

9

Normalmente la convenzione di denominazione per i getter è

getAutoLogin() se ottieni qualche stringa o oggetto.

isAutoLogin() per booleano.

    
risposta data 24.07.2013 - 16:58
fonte
3

Tradizionalmente, i getter sono preceduti da get o is per il valore. Questo è spesso menzionato nelle guide di stile java. Ad esempio Guida allo stile di programmazione Java (questo è solo un esempio).

La convenzione per i nomi di tali metodi viene occasionalmente applicata a strumenti che utilizzano la riflessione o prevedono determinati stili di codice. Ad esempio, sempre in Java (anche se JSP's Expression Language), ${foo.bar} verrà tradotto nella chiamata foo.getBar() quando viene compilato il jsp. Il getValue() viene applicato in questo modo in modo che diventi qualcosa di più di una semplice convenzione.

Come già detto, gli esempi sopra riportati sono di Java. Questa è una convenzione per Java . Altre lingue hanno altre convenzioni che dovrebbero essere guardate e probabilmente seguite anche. Alcune lingue usano le proprietà (e possono fare altre cose belle con loro come copia su richiesta o sola lettura).

Guarda le guide di stile per la tua scelta linguistica. Probabilmente è una buona idea seguirli quando possibile in modo che altri codificatori, leggendo il tuo codice, possano più rapidamente entrare nel codice senza cercare di capire il tuo stile personale.

    
risposta data 24.07.2013 - 17:31
fonte
2

La denominazione di un metodo in un modo intelligentemente leggibile presenta vantaggi. I metodi di denominazione in modo tale che il loro intento e la natura siano facili da derivare dal nome ("i getter hanno il prefisso get , i predicati booleani, is ") presenta anche dei vantaggi.

Dipende da te stabilire un equilibrio, ma in un grande progetto i benefici di coerenza superano di solito quelli di intelligenza accidentale.

Rinominare un metodo per rendere il nome leggibile e conforme alla convenzione è un buon esercizio quotidiano. Nel tuo caso specifico prenderei in considerazione qualcosa come isAutoLoginEnabled o getAutoLoginFlag .

OTOH hai un sacco di metodi concettualmente simili che tutti possono seguire il modello di shouldDoSomething , anche il tuo nome originale può andare bene.

    
risposta data 24.07.2013 - 17:16
fonte
1

Ho sempre trovato che il codice dovrebbe essere il più leggibile possibile. Aiuta a definire chiaramente le intenzioni del codice. Nel tuo caso, pensa a quali sarebbero gli usi sia positivi che negativi del tuo valore booleano e in che modo inciderebbe sulla leggibilità e sulle intenzioni della tua logica.

if(!shouldAutoLogin)
{
     ....
}

vs

if(!getShouldAutoLogin)
{
    ....
}

Che dà un significato più chiaro all'intenzione di ciò che il codice sta cercando di fare?

Come altri hanno suggerito, vorrei anche rinominare la variabile in

isShouldAutoLogin

o simili

    
risposta data 24.07.2013 - 17:01
fonte
0

Tendo a scrivere getAutoLogin quando voglio che il metodo a return un tipo di dati, come int o String . Tuttavia, se voglio verificare se è true o false ( boolean ), semplicemente sostituisco get con is come questo: getAutoLogin > %codice%. Credo che ci sia una convenzione di denominazione per ogni lingua.

    
risposta data 24.07.2013 - 17:30
fonte

Leggi altre domande sui tag