Qual è la convenzione C ++, se esiste, per la denominazione per distinguere tra tipi di struttura e altri tipi? [chiuso]

0

In generale, dovrei usare una sorta di convenzione per i nomi delle strutture che è distinta dal nome di un altro tipo? Stavo pensando a questo quando il mio professore ha iniziato a parlare di strutture.

Ho avuto la seguente discussione con me stesso, e dal momento che non voglio arrivare a conclusioni inaffidabili. Come risponderesti alle domande e quali risposte non sono attendibili?

D: Devo distinguere i nomi delle strutture e i nomi dei tipi per rendere il codice più chiaro?

A: Una struttura è un tipo, quindi non c'è bisogno di fare una distinzione.

RE: Q: Quindi non c'è mai un caso in cui qualcuno usa typedef int SOMETYPE per rinominare un tipo built-in per rendere il codice più flessibile?

RE: A: Non c'è alcun motivo pratico per rinominare i tipi built-in. In realtà, definire int types come SOMETYPE rende il codice meno leggibile perché qualcuno che legge il codice non conoscerà il tipo built-in usato per quel tipo.

Onestamente non mi fido di nessuna risposta. Guardando parte della struttura di base in un nuovo Win32Project usando Visual Studio, vedo cose come typedef short HFILE; che, immagino, rendono più chiaro al programmatore per che cosa è usata la variabile. Forse è troppo soggettivo comunque.

Per inciso, come si determina di solito ciò che accade quando si imbattono in dichiarazioni variabili che usano tipi mai visti prima. Ti basta affidarti all'IDE per portarti o visualizzare la dichiarazione?

    
posta Leonardo 26.02.2013 - 04:53
fonte

1 risposta

3

Nelle strutture e classi C ++ sono equivalenti, tranne che la visibilità predefinita per i membri struct è pubblica, mentre per le classi è privata. I seguenti sono equivalenti:

struct X { private: int i; }

e

class X { int i; }

Non c'è motivo di dare alle strutture un prefisso speciale.

Inoltre, solo perché qualcosa è nell'API Win32 non lo rende una buona idea

Forse typedef short HFILE è stato utile per un'API C, nel caso in cui in seguito volessero passare a typedef int HFILE . È una pratica scarsa per C ++, in cui è possibile scrivere:

struct HFILE { short s; }

Ciò consentirebbe di passare HFILE in giro in base al valore con la stessa efficienza dei cortocircuiti, impedendo nel contempo la conversione indesiderata tra un HFILE e tipi numerici.

    
risposta data 26.02.2013 - 05:44
fonte

Leggi altre domande sui tag