2013-04-01 9 views
5

Mi piace mantenere i nomi delle mie variabili brevi ma leggibili.Nomi di variabili: come abbreviare "indice"?

Ancora, quando, ad esempio, nominando la variabile che contiene l'indice di un elemento in qualche elenco, tendo ad usare elemIndex perché non conosco un modo corretto (e universalmente compreso) di abbreviare la parola "indice ".

Esiste un modo canonico di abbreviare "indice"? O è meglio scriverlo per intero per evitare equivoci?

+5

Mai dare per scontato che un altro sviluppatore comprenda le tue abbreviazioni. Per il bene dell'umanità, spiegali. –

+0

@BradM: Quindi usare 'Idx' come fa Alan è anche una cattiva idea? –

+0

@mareser Se sei severo, allora si, è una cattiva idea.Io tendo ad abbreviare solo le cose che sono veramente lunghe, o dovrebbero essere facilmente evidenti dal contesto, e in entrambi i casi commentare la/e occorrenza/i di prima/e chiave di detta abbreviazione all'interno di una sezione. In pratica, mentre si evita l'abbreviazione è una buona regola empirica, c'è un punto in cui fare ciò può influire negativamente sulla leggibilità del codice (e aumentare le tariffe di battitura). È una questione di giudizio ... o attenersi alla guida di stile delle organizzazioni. – Alan

risposta

7

Nella mia esperienza dipende dal contesto. Tipicamente posso dire se qualcosa è un indice da quello per cui è usato, quindi sono spesso più interessato a sapere di che indice è.

mia regola va grosso modo così:

Se è solo un indice del ciclo in un breve ciclo (ad esempio: tutto si inserisce sullo schermo in una sola volta) e il contesto informa il lettore che cosa l'indice sta facendo, allora puoi probabilmente farla franca con qualcosa di semplice come i.

Esempio: controllo della soglia di un'immagine

//For each pixel in the image, threshold it 
for (int i = 0; i < height; i++) { 
    for (int j = 0; j < width; j++) { 
    if (image[i][j] < 128) { 
     image[i][j] = 0; 
    } else { 
     image[i][j] = 255; 
    } 
    } 
} 

Se la sezione di codice è più grande, o si dispone di più indici in corso, indicare quali elencare è un indice in:

File[] files_in_dir = ...; 
int num_files = files_in_dir.length(); 
for (int fileIdx = 0; fileIdx < num_files; fileIdx++) { //for each file in dir. 
    ... 
} 

Se, tuttavia l'indice è effettivamente importante per il significato del codice, quindi specificarlo completamente, ad esempio:

int imageToDeleteIdx = 3; //index of the image to be deleted. 
image_list.delete(imageToDeleteIdx); 

Tuttavia il codice dovrebbe essere considerato "scrivi una volta, leggi molti" e il tuo sforzo dovrebbe essere assegnato come tale; cioè: molto sulla scrittura, quindi la lettura è facile. A tal fine, come menzionato da Brad M, non assumere mai che il lettore capisca le tue abbreviazioni. Se hai intenzione di usare le abbreviazioni, almeno le dichiari nei commenti.

1

Attenersi a convenzioni consolidate e ben note. Se usi le convenzioni comuni, le persone avranno meno sorprese quando leggono il tuo codice.

I programmatori sono abituati a utilizzare molte convenzioni della matematica. Per esempio. in matematica tipicamente etichettiamo gli indici:

i, j, k 

Mentre ad es. le coordinate sono indicate con lettere come:

x, y, z 

Questo dipende naturalmente dal contesto. Per esempio. utilizzando i per indicare un indice globale sarebbe una idea terribile. Usare nomi brevi per variabili molto locali e nomi più lunghi per più funzioni e variabili globali, è una buona regola empirica.

Per me questo stile è stato influenzato da Rob Pike, che elabora di più su questo here. Come qualcuno con un interesse per la progettazione e l'esperienza dell'interfaccia utente, ho anche scritto più ampiamente su questo.