C++中的模板参数命名有哪些明确和正式的指导方针或标准?我以前做过这样的事:
template<typename TContainer, typename TKey>
void AddKeyToMap(TContainer& the_map, TKey const& the_key);
我也见过像container_t
和key_t
这样的名字。如果有意义的话,我也会在这里接受反对标准化的建议。
发布于 2014-09-12 16:59:41
与任何命名问题一样,这更多地是关于任意选择的一致性,而不是客观的度量。但是,在具体公约方面也有先例。谷歌C++风格指南没有提到类型参数,但是由于它们构成了类型名称,所以通常的规则适用于:
类型名称以大写字母开头,每个新词都有大写字母,没有下划线:
MyExcitingClass
,MyExcitingEnum
。所有类型的名称-类、结构、类型防御和枚举-具有相同的命名约定。类型名称应以大写字母开头,并为每个新单词设置大写字母。没有下划线。例如: //类和结构类UrlTable {.类UrlTableTester { ..。结构UrlTableProperties {. // typedefs typedef hash_map PropertiesMap;// enum enum UrlTableErrors {.
根据这个标准,你会写:
template<typename Container, typename Key>
void AddKeyToMap(Container& the_map, Key const& the_key);
T
前缀可以解释为匈牙利符号,特别是系统匈牙利语,其中标识符包含其类型的编码--这里是typename
。这被广泛认为是多余的和潜在有害的,包括Stroustrup:
我不喜欢以变量的类型命名;我喜欢和推荐什么?根据变量是什么或要做什么来命名变量(函数、类型,随便什么)。选择有意义的名称;也就是说,选择能够帮助人们理解您的程序的名称。我同意,在某些情况下,将类型提示构建为变量名可能会有所帮助,但一般来说,尤其是随着软件的发展,这将成为维护风险并严重损害代码质量。
它归结为您在编写程序时所想到的语义。如果将类型参数视为类型,请使用与类型名称相同的约定。如果将它们视为参数或变量,请使用与参数或变量名称相同的约定。就这么简单。
https://softwareengineering.stackexchange.com/questions/256158
复制相似问题