Come devo contrassegnare i tipi nei programmi C e C ++?


12

In questa mia risposta , ho usato _talla fine dei tipi, che sono finiti nella migliore delle ipotesi, controversi. Questa è la pratica che utilizzo nei miei progetti attuali.

typedef struct {
    int x;
    int y;
} point_t;

Questo doveva essere coerente con i tipi C di stddef.hlike size_to ptrdiff_t. Tuttavia, secondo alcuni commenti nelle mie domande, _tpostfix sembra essere riservato a POSIX. Cosa dovrei usare invece di _t? O dovrei continuare a usare _tcomunque?

Questa domanda è per C e C ++. Se queste lingue hanno convenzioni diverse, sentiti libero di rispondere.


2
Una convenzione comune è quella di avere nomi di classe simili a LookTikeThis. A quel punto non hai nemmeno bisogno di suffissi. (Questo è più comune per Java, .net ecc. Ma funziona anche in C ++.)
cHao

1
in definitiva questa è una forma di notazione ungherese. E quella discussione è infinita. Io per ora sono contrario e vado con la soluzione di cHao. Perché? Perché ho usato la notazione ungherese per circa 4 anni per tutto, poi ho deciso di fare un progetto senza di esso e non l'ho perso affatto. E non ci abbiamo perso tempo. Quindi l'ho lasciato cadere completamente poiché, a quanto pare, non aveva alcun valore per me. E non ho mai guardato indietro.
Stijn

1
Vedi questa domanda per identificativi riservati (incluso _t) stackoverflow.com/a/228797/14065
Martin York

Risposte:


16

Non vi è consenso all'interno delle comunità C e C ++ per quanto riguarda i tipi di denominazione.

Sebbene il _tsuffisso sia effettivamente riservato da POSIX , alcuni sosterranno l'uso del _tsuffisso anche per i propri tipi, mentre altri sosterranno altrettanto categoricamente che non dovresti tentare il destino rischiando nomi duplicati con POSIX.

Convenzioni di denominazione alternative suggeriscono l'uso di un prefisso per tipi, come Co T.


16

Trovo i suffissi piuttosto brutti e quindi evito _tecc. Una buona alternativa è usare una lettera maiuscola per iniziare i nomi dei tipi, quindi Pointnel tuo esempio sopra.


3
e trovo bello avere uno stile DIVERSO dai tipi C standard, quindi leggendo il codice puoi facilmente trovare cosa proviene dal programma client e qual è l'API
Nikko

1
Anche la mia tecnica preferita. I tipi hanno una lettera maiuscola iniziale. Tutti gli altri identificatori non sono tipi e quindi facilmente visibili.
Martin York,

Ho sempre pensato che fosse anche abbastanza brutto. È bello vedere che gli altri sono d'accordo con me.
Syb0rg,

Uso PascalCase solo per i tipi di puntatore (a causa di linguaggi come C # e Java in cui PascalCase significa classe, ovvero riferimento ai dati) ma capisco da dove vieni.
yyny,

1

Dipende da te. A meno che non ci sia un conflitto con le parole riservate, sei a posto. Tuttavia, considera uno scenario in cui lavori in un'azienda e più persone accedono alla stessa base di codice e il tuo codice arriva a una persona che non è a conoscenza della tua abitudine che può quindi assumere che sia un tipo riservato, specialmente se scrivi qualcosa come point_t. Quindi, mantienilo più semplice, ad esempio point è più semplice di point_t. E se vuoi aggiungere qualcosa, aggiungi le iniziali dei nomi.

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.