Come si chiamano funzioni / variabili / ecc. Quando non si riesce a pensare a un buon nome? [chiuso]


13

Quando si definisce una funzione / variabile / etc e non si è sicuri di come nominarla, come si chiama? Come ti viene in mente un nome?

Se usi un nome temporaneo come segnaposto finché non gli dai il suo vero nome, quale nome temporaneo usi?


aggiornare

Sono stato con le cose come WILL_NAME_LATER, NEEDS_NAMEo TO_BE_NAMED. Speravo ci fosse una convenzione adottata, speravo davvero che se avessi usato questa convenzione adottata il mio IDE avrebbe evidenziato il nome fino a quando non l'avessi cambiato.


Fai attenzione a usare tutti i tappi per i nomi delle variabili. Per convenzione popolare, significa una variabile globale.
spong

@sunpech, lo so, uso quella convenzione di denominazione anche per le costanti. Ma penso che la capitalizzazione lo faccia risaltare, quindi non dimentico di rinominarlo. Non lo lascio nominare così a lungo.
JD Isaacks,

3
Per tutte le persone che voi stanno dicendo, non si dovrebbe mai avere un problema venire con un nome ... Anche Jon Skeet a volte non è possibile: stackoverflow.com/questions/521893/...
JD Isaacks

@JohnIsaacks Penso che dovresti osare temporaneamente . Troppe persone stanno leggendo questa domanda e trasformando il codice in qualcosa di sacro. Onestamente, sì, puoi scrivere il codice sciatto ESPECMENTE quando stai cercando di passare a qualcosa di più importante. Qui non stiamo incidendo il codice sulla pietra.
spong

1
Immagino che la convenzione per qualcosa del genere sarebbe quella di aggiungere un TODO nel codice, con la spiegazione del perché è necessario aggiornarlo. Molti strumenti possono analizzare questi TODO e mostrare un elenco di tutto ciò che resta da fare.
Eduardo Scoz,

Risposte:


29

È quasi impossibile non riuscire a pensare a un nome per un artefatto che si desidera progettare. Potrebbe non piacerti il ​​nome che ti viene in mente perché non è conciso o sexy, ma se pensi troppo intensamente, finirai con un artefatto mal chiamato.

Diciamo che hai qualcosa che ti aiuta a costruire oggetti, ma non sai che questo è in genere chiamato fabbrica. Basta chiamarlo ObjectCreator. Sembra ottuso, ma almeno è chiaro.

Supponiamo che tu abbia un dizionario che converte i nomi host in indirizzi IP. Vai avanti e chiamalo HostnamesToIpAddresses. Certo è lungo, ma dice esattamente cosa fa.

L'incapacità di trovare un nome per qualcosa significa che non sai cosa sta facendo, il che significa anche che hai un problema maggiore prima di te.


8
Voglio sempre schiaffeggiare le persone che si lamentano del fatto che gli identificativi siano troppo lunghi (quando sono solo tre o quattro parole). Non dovremmo essere limitati dalla nostra velocità di battitura e, se lo siamo, dovremmo andare a guardare ABCD e imparare a scrivere!
dash-tom-bang,

1
+1 a causa di "The inability to come up with a name for something means you don't know what it is doing". Penso che questo sia davvero un punto importante. Capire questo ti aiuta a trovare ambiguità e chiarezza nel codice.
BiAiB,

34

Cerco sempre di dare grandi nomi alle mie variabili e funzioni .

Se non riesco a pensare a un grande nome, mi accontenterò di un buon nome .

Se non riesco a trovare un buon nome, userò un nome ok .

In 15 anni di programmazione professionale non sono mai stato in grado di trovare un nome decente.


6
+1 per essere, come, poetico.
spong

1
... tuttavia, 15 anni e 6 mesi fa, nacque Microsoft Bob.
VirtuosiMedia,

12

Se non riesci a pensare a un buon nome su una variabile o funzione, o non capisci cosa stai facendo o hai un design scadente. Ad ogni modo, schiaffeggiare un nome arbitrario come "x" (a meno che tu non abbia a che fare con le coordinate) non risolverà il tuo dilemma; non farà altro che peggiorare e il dolore da mantenere maggiore.


8
Non sono d'accordo. Gli sviluppatori non avranno sempre una piena comprensione della terminologia aziendale. Diamine, anche il cliente potrebbe non essere in grado di comunicare la terminologia durante la raccolta dei requisiti - figuriamoci a volte anche capire i propri affari! Ma ciò non impedisce la produzione di software. Non impedisce la creazione di prototipi. O addirittura il codice viene espulso a causa della mancanza di comprensione. Ma il codice in queste situazioni deve ancora essere prodotto e consegnato.
spong

3
@sunpech Mi scusi, ma questo è un po 'spaventoso. Stai cercando di dirci che è comune scrivere codice casuale senza sapere cosa fa realmente? Se non sai qualcosa, fai uno sforzo per scoprirlo ed eviterai problemi in futuro.
Adam Byrtek,

@AdamByrtek No, non intendo questo. Quello che sto dicendo è che non è sempre compito dello sviluppatore e del team avere la migliore comprensione di ciò che un cliente desidera. Alcuni clienti hanno difficoltà a spiegare cosa vogliono o non sanno cosa vogliono. Si verifica un codice errato. Problemi si verificano in progetti da requisiti scadenti a scadenze non realistiche. Questa è la realtà. Non esiste un mondo perfetto in cui uno sviluppatore risolverà tutte le incognite, dove i clienti sono perfetti e le scadenze sono precise. Il codice generato per i prototipi deve essere eliminato. Ma la codifica deve ancora avvenire.
spong

continua ... Non stiamo parlando di creare il codice di produzione o il codice finale appena prima del check-in. Stiamo parlando di come nominare qualcosa di cui non abbiamo ancora la piena comprensione-- per iniziare inizialmente su qualcosa che non è chiaro per forse una buona ragione (esempio: nessuno nel team lo capisce ancora, forse no anche il cliente). Ma le cose devono andare avanti ancora in base a ciò che è noto.
spong

1
@sunpech: L'unico posto in cui ho visto fooed baressere usato nel codice è in piccoli frammenti di codice usati per mostrare un concetto. Certo, inciampo anche quando penso a nomi, ma non sono mai finito in una posizione così brutta dove fooè stata l'unica opzione ragionevole. Se ciò dovesse accadere, allora non so davvero cosa diavolo sto facendo e ho bisogno di tornare al tavolo da disegno e allo pseudo-codice invece di sapere cosa fare.
gablin,

5

Questa domanda e soprattutto le sue risposte mi spaventano senza senso. Qualcuno dovrà mantenere quel codice in cui hai appena chiamato una variabile "Cup", sai. Se non sei fortunato, quel qualcuno sarai tu!

Hai una variabile. È una cosa. Rappresenta comunque una cosa. E le cose hanno nomi. Ecco come sai che sono cose! Mi stai davvero dicendo che devi nominare una cosa dopo un'altra cosa perché non riesci a trovare il nome della cosa reale?

Iteratori dovrebbero essere chiamati i. Gli iteratori annidati sono probabilmente un errore, ma se ne hai bisogno, allora fatti strada attraverso il resto delle vocali, in ordine (a, e, o, u e dio aiutami, sì, a volte sì).

A parte questo, basta chiamare la cosa che è e farsi fare!


9
Devo protestare! Chiaramente l'iteratore interno dovrebbe essere chiamato je quello all'interno di quella k . La tradizione matematica di lunga data ti sta guardando alle spalle!
Frank Shearar,

Huh. Non ho mai fatto je k. Vedo che è ragionevole, però.
Dan Ray,

8
Uno dei motivi per cui Dijkstra era così naturale per l'informatica era che il suo nome includeva le tre variabili iteratrici più comuni nell'ordine giusto.
glenatron,

3
@glenatron: Finalmente un modo per ricordare come si scrive quel nome!
configuratore

4

Se non riesco a trovare subito un grande nome, uso temporaneamente un nome "ok", quindi continuo a scrivere codice. Almeno sarà qualcosa che descrive adeguatamente l'oggetto, anche se non è perfetto . Quasi sempre, quando avrò finito di scrivere la prima bozza di quel particolare pezzo di codice, mi sarà venuto in mente un nome più perfetto. Attraverso il processo di codifica, le mie intenzioni con quella particolare variabile diventano più chiare. (D'altra parte, a volte mi viene in mente che la variabile to era mal concepita per cominciare e la elimino a favore di qualcos'altro.)


3

Lo chiamo come penso che la funzione dovrebbe fare - qualcosa che più o meno trasmette l'intento. Una volta che il corpo della funzione è stato scritto, trovo ovvio come chiamarlo e tornare indietro e rinominarlo se necessario.


1
Questo non funziona sempre, specialmente quando lo sviluppatore potrebbe non avere familiarità con la terminologia o persino con l'intento del business / settore. Qualcosa di più generico e ovvio dovrebbe essere usato per comunicare che deve essere definito e modificato in seguito. L'OP sembra chiedersi quando l'intento è sconosciuto e cosa dovrebbe essere inizialmente utilizzato. Se la denominazione è qualcosa che trasmette più o meno intenti, allora un buon nome non è già lontano.
spong

1
@sunpech Seriamente, anche quando ho iniziato per la prima volta in un lavoro con un dominio abbastanza specifico, non ho avuto problemi a trovare un nome di funzione. Forse ho solo bisogno di scrivere più funzioni. :)
Adam Lear

1
@sunpech: come puoi scrivere una funzione senza sapere cosa fa?
configuratore

4
@sunpech: non l'ho detto. Ho appena detto che non puoi scrivere una funzione senza sapere cosa sta facendo. Non è possibile. Non l'ho mai visto accadere e non vedo come potrebbe accadere. Forse sono sciocco, ma quando chiami una funzione DoFoo (), che diavolo ci metti dentro ??
configuratore

2
@sunpech: non ho mai detto che i nomi debbano essere "buoni" dall'inizio. Non riesco proprio a vedere come potresti entrare in una situazione in cui vuoi creare una funzione ma non sai cosa farà.
configuratore

2

foo and bar . Dal momento che non c'è ancora alcun significato dietro le funzioni / variabili di denominazione, uso una combinazione di Foo e / o Bar con tutto ciò che sto cercando di definire.

Rende più facile la ricerca / la ricerca in seguito quando avrò una migliore comprensione di come dovrebbe essere chiamato.

Vedi anche Foobar su Wikipedia .

I termini foobar, foo, bar e baz sono talvolta usati come nomi di segnaposto (detti anche variabili metasintattiche) nella programmazione del computer o nella documentazione relativa al computer. Sono stati usati per nominare entità come variabili, funzioni e comandi il cui scopo non è importante e servono solo per dimostrare un concetto. Le parole stesse non hanno alcun significato in questo uso. Foobar è talvolta usato da solo; foo, bar e baz sono talvolta usati in quell'ordine, quando sono necessarie più entità.


1

Prefisso la tua funzione con qualcosa e assegnagli un nome best-shot per ora. Ad esempio, una funzione che salva-tutti-prodotti-per-l'utente-selezionato-nel-database potrebbe essere RENAME_SaveAllProductsForTheSelectedUserToTheDatabase()


Naturalmente, in questo caso, dovresti semplicemente nominare la funzioneSaveAllProductsForTheSelectedUserToTheDatabase()
configuratore

1

Qualunque cosa io chiami queste variabili difficili da nominare, faccio un //TODO find a better namecommento in modo da poter tornare più tardi per rinominarlo

Di solito, quando inizio a usare la variabile / funzione / classe trovo un nome migliore per loro.


0

È meglio inserire presto un buon nome mentre si ha in mente il codice, piuttosto che aspettare fino a quando, quando si desidera, lo si sia chiamato bene!


0

Non ho quasi mai problemi a trovare nomi descrittivi validi, ma a volte la denominazione diventa piuttosto ridondante, in quanto i nomi delle classi e delle variabili sono molto simili. WebClient webclient = new Webclient (uri); ...e simili.


0

A volte uso zzzz temporaneamente.

Una buona regola per aiutarti è questa:

  • Restituisce un valore booleano e non ha effetti collaterali: quindi usa un aggettivo (inizia con è, era) ma mai futuro.
  • Restituisce un tipo diverso e non ha effetti collaterali: Quindi usa un sostantivo.
  • Non restituisce altro che fare qualcosa: quindi usa un verbo.
  • È una classe: quindi usa un sostantivo.

-1

In passato ho usato molto Bob , ma questa sarebbe l'unica variabile non correttamente denominata nella funzione / script perché altrimenti il ​​codice diventa rapidamente illeggibile.

(Bob è una sbronza dai tempi di uni - scappare con le variabili chiamate bob e fred)

Sono felice di usare i per un contatore.

Meglio usare nomi significativi, anche se non sono brevi e scattanti.


Ho lavorato con un ragazzo che ha usato nomi come quello per le sue applicazioni e classi all'interno delle sue applicazioni. Forse inutile dirlo, il suo codice era generalmente molto scarso.
dash-tom-bang,

2
@ dash-tom-band: penso che il suo codice fosse generalmente molto bob.
configuratore

Se riesco a scrivere il mio nome in una notazione ungherese per un elenco, di solito lo faccio, anche se è un po 'allungato. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner,

-1

Se non ho assolutamente idea di come nominare la variabile, cosa che non succede da più di vent'anni ... nomi di vecchie fidanzate o donne che vorrei fossero fidanzate. L'ultimo codice con questi identificatori è stato rimosso dalla produzione alcuni anni fa.



-2

blah , ma solo temporaneamente. Torno sempre indietro e li rinomino con nomi di variabili validi.


1
Non usare mai questo. Non male.
Dinamico

-2

Doit (), a (), b (c) xxxx () ....

Naturalmente vengono rifattorizzati via .... di solito


-3

Tendo a usare roba sulla mia scrivania.

  • Tazza
  • alt
  • foo
  • b / a / c (junk a lettera singola)
  • alk (junk multi-letter pronunciabile)

Mi sposto anche verso nomi generici (almeno per le funzioni):

  • scambiare
  • processi
  • reviseVar
  • rattoppare

Questo è per cose temporanee però. Io giuro niente lo rende nel repository, tanto la produzione di meno.

...


Mi sento sempre sporco, ma a volte il nome più apparente per un metodo è "Go" o "DoIt". Ogni volta che riesco a trovare un nome migliore che faccio, ma a volte è davvero "fai il lavoro che il nome del programma implica sta per accadere". Questo, tuttavia, è troppo lungo da usare per un nome di funzione. :)
dash-tom-bang

@ dash-tom-bang: per qualche motivo, runsembra molto meglio di go. Forse è perché tutti vorremmo che i nostri programmi fossero più veloci.
configuratore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.