Quali fattori dovrei prendere in considerazione quando scelgo i nomi per gli identificatori?

3

Quali fattori devo prendere in considerazione quando scelgo nomi per identificatori come variabili? Sono preoccupato per problemi di spazio, ad esempio consumo di memoria extra quando si scelgono nomi più lunghi.

Ad esempio, prendi queste due variabili:

bool noExp = true;
bool willNotExpireEver = true;

Ognuno occuperà la memoria della dimensione di bool . Ma per quanto riguarda i nomi delle variabili? Dopo tutto sono personaggi che devono essere memorizzati da qualche parte. Dove viene assegnato lo spazio per loro? Sto perdendo tempo scegliendo nomi più lunghi?

    
posta Afnan 12.02.2012 - 12:16
fonte

4 risposte

4

Is there appropriate way to declare variables name to avoid memory or space issues.

I nomi delle variabili sono principalmente per gli umani. Il compilatore C # non si cura del tuo nome, purché rispetti le regole della lingua. Quindi, per rispondere alla tua domanda, non ci sono problemi di memoria o di spazio che potrebbero derivare solo dal nome. Tuttavia, ci sono problemi che potrebbero derivare dall'usare lo stesso nome con scope differenti ma questo non è quello che stai chiedendo.

bool noExp = true; bool willNotExpireEver = true;

due variabili dovrebbero occupare lo stesso spazio in memoria che è la dimensione del rito di bool?

No. In generale, ciascuna variabile occupa una posizione di memoria diversa per un periodo di tempo nella durata di esecuzione del programma. Questa durata dipende da dove è stata dichiarata e quando è stata eliminata.

now where do variable names go? I mean they are somehow characters after all, where do they get space?

Il ruolo del compilatore è quello di prendere i tuoi simpatici inglesi come nomi e convertirli in indirizzi che devono essere usati dal codice binario. Questo è il motivo per cui il nome inglese non è molto importante per il compilatore.

so is it better to name variables short or it does not matter?

Come suggerito da altre risposte, ci sono alcune conversioni comuni su come denominare le variabili. Questa è una questione di gusti e dovuta ad alcune lezioni apprese da altri. In generale, non includere il tipo di variabile come parte del nome.

    
risposta data 12.02.2012 - 12:38
fonte
1

Per prima cosa, rispondi all'ovvia sotto-domanda:

"so is it better to name variables short..."

Risposta breve: No.

Risposta lunga: i nomi variabili sono solo per divertimento del programmatore. Il linker sostituisce i riferimenti alle variabili con gli indirizzi di memoria e non vi è alcun sovraccarico di runtime. Inoltre, è una cattiva pratica usare nomi variabili che non significano nulla.

Il titolo della tua domanda "il modo migliore per nominare le variabili" è molto ampio e ci sono buoni nomi e nomi cattivi. In generale è una buona idea usare qualcosa di descrittivo (che cos'è) e distintivo (come è diverso dalle altre variabili), più specificamente ci sono alcune best practice come descrivere il tipo della variabile come un breve prefisso come in notazione ungherese , come intTotal e strUsername .

Spero che questo aiuti !

    
risposta data 12.02.2012 - 12:27
fonte
0

Durante il runtime entrambe le variabili occupano la stessa quantità di memoria. Quindi, non c'è motivo per l'ottimizzazione. Ma il codice non è per one time shot , è anche per il mantenimento del progetto. È per diverse persone che cercano di capire il codice e la semantica dopo forse molto tempo. Quindi è importante che il significato della variabile (o qualsiasi altro identificatore) sia nel contesto dato il più utile possibile.

Questo non significa che tutti i nomi delle variabili dovrebbero essere il più lunghi possibile. Dipende dal loro scopo e dalla trasparenza del codice circostante. Ma quando si assegna un nome, un metodo, una costante o una variabile, si tenga sempre presente che chiunque altro può avere a volte il compito di comprendere il proprio codice e le proprie intenzioni. In questo modo puoi facilmente sapere quando utilizzare solo una variabile come i in un ciclo for o MyUserfulEntityProxy per una classe.

    
risposta data 12.02.2012 - 12:41
fonte
0

Questa domanda ha ricevuto risposta in precedenza su stackoverflow .

Per citare da lì:

No it doesn't. Compiler actually does not save original variable names, you can look at the IL code of any compiled assembly with disassembler.

Quindi, per farla breve , non ci sono fattori che supportano la preferenza per i nomi di identificatori più brevi.

Tuttavia , ci sono alcuni effetti collaterali che dovrebbero essere considerati quando si ottimizzano le prestazioni: Non compromettere la manutenibilità!

Quando si ottimizzano le prestazioni, i vantaggi che potrebbero essere ottenuti dall'ottimizzazione dovrebbero essere sempre valutati rispetto agli svantaggi che comporta. Supponiamo che la lunghezza del nome variabile abbia un effetto, spesso è più saggio scegliere nomi più lunghi per migliorare la leggibilità e migliorare la manutenibilità attraverso questo. Ma anche più a lungo non è sempre meglio. Discuti apertamente la scelta dei nomi delle variabili attraverso le revisioni del codice.

Inoltre, i nomi delle variabili non dovrebbero essere lì eternamente. Sii audace e refactoring se il nome non si adatta più al contenuto della variabile.

    
risposta data 12.02.2012 - 13:24
fonte

Leggi altre domande sui tag