Standardizzazione e linee guida ufficiali per la denominazione dei parametri template C ++ [closed]

2

Quali sono alcune linee guida o standard espliciti e ufficiali per la denominazione dei parametri del template in C ++? Ho fatto qualcosa del genere in passato:

template<typename TContainer, typename TKey>
void AddKeyToMap(TContainer& the_map, TKey const& the_key);

Ho visto anche nomi come container_t e key_t . Accetterei anche consigli contro la standardizzazione qui, se ha senso.

    
posta void.pointer 13.09.2014 - 00:42
fonte

1 risposta

3

Come per ogni domanda sulla denominazione, questo è più sulla coerenza in una scelta arbitraria che su misure oggettive. Tuttavia, esiste un precedente verso convenzioni specifiche. La Guida di stile di Google C ++ non dice nulla sui parametri dei tipi, ma poiché costituiscono nomi di caratteri , si applicano le normali regole:

Type names start with a capital letter and have a capital letter for each new word, with no underscores: MyExcitingClass, MyExcitingEnum.

The names of all types — classes, structs, typedefs, and enums — have the same naming convention. Type names should start with a capital letter and have a capital letter for each new word. No underscores. For example:

// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...

// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;

// enums
enum UrlTableErrors { ...

Secondo questo standard, scriverebbe:

template<typename Container, typename Key>
void AddKeyToMap(Container& the_map, Key const& the_key);

Il prefisso T potrebbe essere interpretato come notazione ungherese , in particolare sistemi ungherese in che l'identificatore include una codifica del suo tipo-qui, typename . Questo è ampiamente considerato ridondante e potenzialmente dannoso, incluso da Stroustrup :

I don’t like naming a variable after its type; what do I like and recommend? Name a variable (function, type, whatever) based on what it is or does. Choose meaningful name; that is, choose names that will help people understand your program.

I agree that in some cases, building type hints into variable names can be helpful, but in general, and especially as software evolves, this becomes a maintenance hazard and a serious detriment to good code.

Si riduce alla semantica che hai in mente quando scrivi il programma. Se si pensa ai parametri del tipo come tipi, utilizzare la stessa convenzione utilizzata per i nomi dei tipi. Se li consideri come parametri o variabili, utilizza la stessa convenzione che utilizzerai per i nomi di parametri o variabili. È così semplice.

    
risposta data 13.09.2014 - 02:59
fonte

Leggi altre domande sui tag