Che senso ha fare una distinzione sintattica tra tipi standard e definiti dall'utente?

13

Anche se qui farò riferimento specificamente alle convenzioni di denominazione di C ++ e Bjarne Stroustrup , in linea di principio, ho visto che le persone usano regole simili per altre lingue qua e là.

Quindi, l'idea di base è che si dovrebbe essere in grado di distinguere i tipi standard dai tipi definiti dall'utente durante la lettura del codice. Ad esempio, Bjarne Stroustrup suggerisce che si usi

an initial capital letter for types (e.g., Square and Graph)

che, tenendo conto di ciò

The C++ language and standard library don't use capital letters

consente di raggiungere l'obiettivo di cui sopra.

Ma perché abbiamo bisogno di farlo? Quale può essere lo scopo di distinguere i tipi standard e definiti dall'utente?

Non sono riuscito a trovare alcun ragionamento di Bjarne Stroustrup su questa materia, e inoltre, io stesso penso in modo diametralmente opposto. : D Lo so, lo so, "Chi sono io per contestare Stroustrup?" Ma, ascolta, un sacco di funzionalità del linguaggio C ++, ad es. sovraccarico dell'operatore, allo scopo di consentire tipi definiti dall'utente un livello simile di supporto sintattico come tipi standard. E poi tutto questo è sconcertato da una diversa disciplina di denominazione ...

P.S. Per non parlare del fatto che spesso una parola non è sufficiente per nominare una classe e una parola separata da underscore che inizia con una lettera maiuscola sembra così straniera.

    
posta Wildcat 28.11.2014 - 20:46
fonte

3 risposte

5

Non c'è assolutamente alcuno scopo o beneficio in tale. Uno degli obiettivi del C ++ era quello di trattare gli UDT e i primitivi in modo intercambiabile, e sebbene non siano riusciti completamente, questa è un'area in cui non è necessario differenziare.

Quando si tratta di nominare, Stroustrup è pazzo, e questo è un fatto scientificamente provato.

    
risposta data 28.11.2014 - 21:27
fonte
3

Le convenzioni sui nomi servono a supportare la comprensione del codice umano (cioè programmatore e manutentore).

Gli UDT possono essere specificati in modo che la dichiarazione di variabili, l'inizializzazione, le espressioni e le istruzioni funzionino su di essi in modo diverso rispetto a quanto avviene per i tipi standard. Per la ricerca di problemi, è utile che il manutentore abbia qualche indicazione che alcune sezioni di codice potrebbero fare cose funky (ad esempio l'implementazione di un tipo integrale definito dall'utente utilizzato all'interno di una funzione potrebbe avere un difetto nel modo in cui lo fa). / p>

Ci sono molti modi per fornire tali spunti (commenti, specifiche di progettazione, ecc.). Il vantaggio delle convenzioni di denominazione è che sono presenti nel codice, mentre i commenti possono essere omessi, non aggiornati, ecc.

    
risposta data 25.01.2015 - 03:04
fonte
2

Un motivo per cui uso le parole in maiuscolo per i tipi, è quello di distinguere le variabili dai tipi. Ciò consente di dichiarare una variabile con, a parte la lettera maiuscola, lo stesso nome:

Foo foo;
Graph graph;

Questo può essere utile per le classi di cui viene utilizzata una sola istanza in ogni contesto, ad es. impostazioni di configurazione.

    
risposta data 25.01.2015 - 04:29
fonte

Leggi altre domande sui tag