2010-09-23 15 views
6

Convenzioni di denominazione Microsoft per costanti put .Net in caso Pascal. In realtà, ci dice in modo esplicito di evitare di utilizzare tutti i tappi per le costanti:Perché le costanti non sono tutte in maiuscolo in .Net?

Si potrebbe anche avere di capitalizzare identificatori per mantenere la compatibilità con, simbolo non gestito esistente schemi, in cui tutte le lettere maiuscole caratteri sono spesso utilizzati per enumerazioni e valori costanti. In generale , questi simboli non devono essere visibili all'esterno dell'assieme che li utilizza.

Da MSDN.

Su SO ho trovato alcune domande sull'argomento, come questo one, ma non sono riuscito a trovare una motivazione. Quindi, qualcuno sa o ha un riferimento che indica perché la MS ha scelto questa convenzione?

+9

perché tutto-maiuscolo è difficile da leggere ed è DESTINATO il pre-compilatore, CHE .NET doesn' T ANCHE AVERE. –

+4

Inoltre, è solo brutto. –

+0

Ok, farò una risposta ufficiale. –

risposta

7

È solo una linea guida di stile. I linguaggi di programmazione hanno iniziato a raccomandare e spingere le convenzioni di formattazione in modo che il codice sia più leggibile.

Inoltre, i simboli che vengono sostituiti dal preprocessore meritano un'attenzione speciale - vivono al di fuori/prima del sistema di tipi e potrebbero non essere ciò che sembrano essere. Le costanti sono solo costanti, non cambieranno in fase di compilazione o di runtime.

+0

Se si pensa alla cronologia, la lettera maiuscola è stata usata per i simboli del preprocessore C, quindi quando C++ è uscito e ha avuto 'const', quei simboli sono stati conservati in caratteri misti. C# e Java provengono entrambi da C++, quindi seguono la convenzione C++. –

+0

In una nota a margine, non dimentichiamo che un 'const' è puramente in fase di compilazione mentre un' static readonly' è presente in runtime, motivo per cui solo il primo è consentito come valore predefinito in C# 4. –

+0

In seconda lettura , Ho un briciolo da scegliere: lo scopo di denominare gli standard e le convenzioni di formattazione non è solo quello di rendere il codice più leggibile, ma per renderlo reciprocamente comprensibile. Non c'è una grande ragione per cui .NET consiglia MixedCase per i metodi invece di camelCase, ma se tutti usano la stessa di queste due scelte, possiamo leggere il codice l'uno dell'altro senza essere confusi o infastiditi. È come guidare sul lato destro della strada anziché a sinistra: non importa, purché ognuno scelga lo stesso lato. –

5

PERCHÉ LA CARTUCCIA ALL-UPPERCASE È BRUTTA E DIFFICILE DA LEGGERE E SI INTENDE PER IL PRECOMPILER, CHE NET NON HA ANCHE.

Inoltre, Bill Gates lo vuole in questo modo e il denaro non è mai sbagliato.

+0

Rubato al "brutto" di Bennor; dare credito. –

+2

E con Resharper (forse anche VS) è possibile digitare MCVTNC per MyConstantValueThatNeverChanges, ma non funzionerà per tutte le maiuscole. – PostMan

+0

Non penso che l'acronimo funzioni nell'elenco di selezione, almeno non per VS 2008. –

2

Microsoft non segue le proprie regole perché se si riflette sulle nuove classi System.Threading.Tasks in C# 4 YOU_WILL_FIND_LOTS_OF_CAP_CONSTANTS.

È una cosa di stile. Personalmente non mi dispiace. Basta essere coerenti.

+0

È vero; se guardi internals .Net, trovi anche molti usi 'm_', nonostante questo sia male, notazione ungherese proibita. –

3

Dire che tutti i tappi è brutto e quindi non dovrebbero essere usati è la logica infantile borderline. Viene da persone che si lamentano di ciò a cui non sono abituati.

Passando da Java a C, ho iniziato a utilizzare underscores_between_words in nomi e funzioni variabili. CamelCase è estremamente brutto per me ora. Ma continuo a usare camelCase per C++/Java senza lamentarmi perché è una convinzione.

Se non riesci a renderti flessibile, la programmazione diventerà un'amante amante. Questa è l'abilità di un programmatore.

+2

No, è oggettivamente cattivo: tutto maiuscolo è semplicemente difficile da leggere. Ho iniziato con lettere maiuscole perché questa è l'unica opzione in EBCDIC. Ora che abbiamo linguaggi a maiuscole e minuscole che usano ASCII, abbiamo opzioni migliori. –

+0

@Steven: non sono d'accordo. Pizzach ha ragione - ALL_UPPER è solo testo, e non ho mai sentito di una statistica che ha dimostrato che è più difficile da leggere rispetto al caso di piccole dimensioni. Farei solo una breve nota, poiché i caratteri di sottolineatura che separano le parole costano un altro carattere nella parola, quindi abbiamo un codice "più largo" o "più lungo", che è cattivo. –

+0

@Bruno: le lettere maiuscole sono più simili nella forma di quelle minuscole, motivo per cui sono più difficili da leggere. Per citare Wikipedia, "comunque, lunghe campate di testo in alfabeto latino in maiuscolo sono più difficili da leggere a causa dell'assenza degli ascendenti e dei discendenti trovati nelle lettere minuscole, che possono aiutare a riconoscere". –

1

Proprio come BTW - EBCDIC è la estesa versione di BCD (decimale codificato in binario) e come tale sicuramente supporta le minuscole. Sono le macchine vintage anni '60 e precedenti (e non solo) che non includevano le minuscole.

(E, naturalmente, i computer a casa presto, come il TRS-80 non avevano minuscole, sia)

+0

Hai ragione: EBCDIC supporta la minuscola. Tuttavia, per quanto posso ricordare, le macchine con schede perforate che ho usato con l'IBM 370 non offrivano alcun modo per inserire caratteri minuscoli. –

Problemi correlati