2013-10-08 3 views
10

Stavo pensando ultimamente sull'utilizzo di variabili locali, ad esempio:Dovrei usare meno variabili locali o scommettere sulla concisione?

dovrei preferire questo:

String firstString = classString.getFirstString(); 
String secondString = classString.getSecondString(); 

ClassGlobal.execute(firstString, secondString); 

o di questo;

Personalmente preferirei il successivo come più conciso e non richiede due variabili di istanza aggiuntive. Ma è una buona cosa da fare? Sto sacrificando la leggibilità del codice per la concisione? O è giusto usare uno dei due?

+4

Questa è in gran parte una questione di stile.Il mio approccio generale è quello di creare una variabile locale solo se ho intenzione di usarlo più di una volta, o se il costrutto che uso per assegnarlo è molto prolisso e apparirebbe brutto se usato al posto della variabile. Per quanto riguarda le prestazioni, non sarei sorpreso se il compilatore non decidesse comunque di incorporare molti dei compiti. – DaveH

+1

Preferisco che il codice sia il più semplice e chiaro possibile. Quale pensi sia più semplice e chiaro? La denominazione delle variabili ti dice qualcosa che non puoi risolvere dal nome del metodo? –

+1

(Sono le cose globali che mi interessano di più.) –

risposta

3

Per quanto mi riguarda, è necessario dare priorità alla leggibilità del codice per ridurre al minimo il numero di variabili. Potresti capire perfettamente quella linea di codice, ma per qualsiasi programmatore che riprenderà il tuo codice in futuro, apprezzerà l'uso di variabili locali (anche meglio se usi buoni nomi "auto-definenti").

+1

E tutto il resto! La leggibilità viene sempre prima di tutto. –

+0

@TFNelson Tranne quando non lo fa, quale * fa * accade. –

+0

@Dave Newton ah, naturalmente. Tutte le regole sono seguite senza eccezioni tranne che per le eccezioni. –

3

In questo caso specifico non importa molto. Se la tua linea è leggibile da sola, non è necessario separare le variabili. Tuttavia, quando inizi ad aggiungere più logica di un getter, tenderei a separarli. Si consideri il seguente codice:

ClassGlobal.execute(classString.getFirstString().toLowerCase().substring(0, 10), 
    classString.getSecondString().toLowerCase().substring(0, 10)); 

Questa linea sarebbe molto meglio se si separare FirstString e SecondString e assegnare loro nomi significativi. Come con la maggior parte delle cose nel codice, non c'è un modo "migliore". Tenderei ad errare sul lato della leggibilità.

2

Andrò per il primo. Aumenta la leggibilità. Per la seconda riduce defeinitamente alcune operazioni di assegnazione (!), Ma nella maggior parte dei casi si tratta di una quantità molto trascurabile di miglioramento delle prestazioni. Quindi meglio rigoroso con leggibilità

Inoltre, non si dovrebbe preoccuparsi dell'ottimizzazione prematura. Inoltre, oggigiorno i compilatori fanno questo tipo di ottimizzazione per te.

+0

e probabilmente ottimizzato dal compilatore in build di versioni ... –

+0

yup .. i compilatori fanno anche questa ottimizzazione per voi – stinepike

2

Se è possibile creare codice di lettura più significativo assegnando un buon nome alla gente del posto, quindi creare gli altri locali (utile anche se potrebbe essere necessario eseguire il debug interattivo ...).

Se la gente del posto non avrebbero aggiungono significato perché i metodi di essere chiamati sono che ben nome-, e si ha una capacità abbastanza corazzata a prova di unità piuttosto che eseguire il debug e breakpoint .... andare per la notazione compatta può sentirsi meglio. Ma il più delle volte mi orienterei verso la creazione della gente del posto.

12

In caso di dubbio, basta ricordare questa citazione da Coding Horror:

codice sempre come se la persona che finisce per mantenere il codice è uno psicopatico violento che sa dove si vive.

Il significato di questa citazione è "rendere il più semplice possibile per capire e leggere il codice." In seguito, se è necessario mantenere il programma di nuovo 5 anni lungo la strada, sarà più semplice per te, se lo rendi il più leggibile possibile. Questo è un vantaggio per tutti.

+4

upvote per aver citato Jeff. –

+4

Wow! questo è il più uptotes che abbia mai ottenuto su una risposta. Non ho mai realizzato il potere che una citazione di Jeff ha su credibilità e upvotes. Solo menzionare il suo nome attira le persone a sviare il post – Domecraft

+0

È una citazione particolarmente risonante. –

0

La leggibilità è la cosa più importante. Prova a leggere il tuo codice in 1 anno se non è ben leggibile e otterrai la risposta.