Di fronte a sfide di denominazione specifiche, ho trovato un thesaurus (online o cartaceo) molto utile.
Per quanto riguarda la costruzione della competenza:
Leggi molti libri di programmazione ( alta qualità ). Gli autori di questi libri avranno messo un po 'di pensiero nella denominazione di variabili e funzioni appositamente per rendere il codice il più chiaro possibile.
Ancora più importante, gli autori avranno generalmente anni di esperienza con le convenzioni comuni alla lingua o alla tecnologia in questione e tenderanno ad usare una buona denominazione idiomatica.
Naturalmente, variabili come foo
e bar
sono molto comuni (e per una buona ragione!) quando spiegano la sintassi per separare i nomi forniti dallo sviluppatore dalle parole chiave della lingua. Ma la maggior parte dei libri coprirà alcune cose più carnose alla fine e avrà esempi realistici.
Inoltre, leggi in particolare libri come codice completo , The Pragmatic Programmer , e altri libri di questo tipo che affrontano specificamente questi problemi di programmazione.
Anche leggere un sacco di codice sorgente di alta qualità per vedere buoni esempi è un'ottima idea, ma ora il tuo compito è ancora più difficile: trovare il codice sorgente di alta qualità !
Non posso fare a meno di aggiungere: potresti anche essere sorpreso di quanto sia grande il vocabolario per descrivere le cose che trovi nella narrativa - specialmente la fantascienza.
Dici che non vuoi solo "leggere un sacco di libri", ma questa è la mia risposta comunque. Non sarà più facile di così. Qualsiasi altro metodo può essere ugualmente efficace, ma non sarà più efficiente o semplice.
Modifica
Dopo aver riflettuto ancora su questo, dovrei anche aggiungere che questa è una di quelle abilità che ottieni facendo più di che studiano . La buona nomenclatura fa parte della pratica di programmazione stessa.
Pensare davvero duramente alla tua denominazione mentre stai facendo è costruire quell'abilità. Ecco alcune cose che personalmente cerco di concentrarmi sulla denominazione:
- Qual è il nome più breve per questa cosa?
- Il namespacing mi consente di avere nomi locali migliori?
- Questo si adatta al dominio del problema stesso o ad alcuni aspetti tecnici del codice? (Preferisci il dominio del problema per la denominazione, se puoi.)
- Sono ridondante? (
encode_function()
vs encode()
)
- Questo nome avrà senso per me tra un anno? (Questa domanda è difficile .)
- Questo copre il caso generale? (
red_border
vs border
)
- Questo troppo generale? (
stuff
vs machine_state
)
- Se stavo descrivendo questo ad un amico, è questa la parola che userei? In caso contrario, perché no?
L'elenco continua.
Ci vogliono anni e anni per essere veramente bravo a nominare. Ti vergognerai al codice di 5 anni. Poi, cinque anni dopo questo , ti verrai di nuovo in imbarazzo. Ripetere.
Inoltre, non abbiate paura di rinominare in seguito. Molto spesso, il nome corretto "evidentemente ovvio" di una cosa non diventa evidentemente evidente fino a quando non ci si convive per un po '!