社区首页 >问答首页 >C++模板参数命名的标准化和正式指南

C++模板参数命名的标准化和正式指南
EN

Software Engineering用户
提问于 2014-09-12 14:42:56
回答 1查看 2.4K关注 0票数 3

C++中的模板参数命名有哪些明确和正式的指导方针或标准?我以前做过这样的事:

代码语言:javascript
代码运行次数:0
复制
template<typename TContainer, typename TKey>
void AddKeyToMap(TContainer& the_map, TKey const& the_key);

我也见过像container_tkey_t这样的名字。如果有意义的话,我也会在这里接受反对标准化的建议。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2014-09-12 16:59:41

与任何命名问题一样,这更多地是关于任意选择的一致性,而不是客观的度量。但是,在具体公约方面也有先例。谷歌C++风格指南没有提到类型参数,但是由于它们构成了类型名称,所以通常的规则适用于:

类型名称以大写字母开头,每个新词都有大写字母,没有下划线:MyExcitingClassMyExcitingEnum。所有类型的名称-类、结构、类型防御和枚举-具有相同的命名约定。类型名称应以大写字母开头,并为每个新单词设置大写字母。没有下划线。例如: //类和结构类UrlTable {.类UrlTableTester { ..。结构UrlTableProperties {. // typedefs typedef hash_map PropertiesMap;// enum enum UrlTableErrors {.

根据这个标准,你会写:

代码语言:javascript
代码运行次数:0
复制
template<typename Container, typename Key>
void AddKeyToMap(Container& the_map, Key const& the_key);

T前缀可以解释为匈牙利符号,特别是系统匈牙利语,其中标识符包含其类型的编码--这里是typename。这被广泛认为是多余的和潜在有害的,包括Stroustrup

我不喜欢以变量的类型命名;我喜欢和推荐什么?根据变量是什么或要做什么来命名变量(函数、类型,随便什么)。选择有意义的名称;也就是说,选择能够帮助人们理解您的程序的名称。我同意,在某些情况下,将类型提示构建为变量名可能会有所帮助,但一般来说,尤其是随着软件的发展,这将成为维护风险并严重损害代码质量。

它归结为您在编写程序时所想到的语义。如果将类型参数视为类型,请使用与类型名称相同的约定。如果将它们视为参数或变量,请使用与参数或变量名称相同的约定。就这么简单。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/256158

复制
相关文章
【C++指南】命名空间
然后,包含了<stdlib.h>头文件之后,就报错了,因为在stdlib头文件中,rand是函数,这里我们又定义了以rand全局变量,就产生了命名冲突
用户11396077
2024/12/06
930
【C++指南】命名空间
C++中的标准化工厂—— 模板
        众所周知,C++是基于C语言的编写,所以它也继承了众多C的特性(当然也包括部分缺点),且基于它们进行改良和优化,这篇文章要讲的是模板,这算的上是C++基于C的一个“懒人利器”
比特大冒险
2023/04/16
7470
C++中的标准化工厂—— 模板
【C++初阶】命名空间 && 缺省参数
// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决
IsLand1314
2024/10/15
1070
【C++初阶】命名空间 && 缺省参数
【C++】可变参数模板
​ C++11 的新特性可变参数模板能够让你创建可以接受可变参数的函数模板和类模板,相比 C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。
利刃大大
2025/03/07
320
【C++指南】缺省参数(默认参数)
函数声明时缺省参数从右往左,函数调用传递实参时从左往右,如果声明和定义分离就只在声明处给缺省值
用户11396077
2024/12/06
910
【C++指南】模板 深度解析
模板是C++的一种特性,用于创建函数或类的通用形式,这些形式可以应用于多种数据类型。
用户11396077
2025/01/20
970
【C++】非类型模板参数、模板特化、模板的分离编译、模板总结
模板参数分类类型形参与非类型形参。 类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。
平凡的人1
2023/10/15
2810
【C++】非类型模板参数、模板特化、模板的分离编译、模板总结
【C++修行之道】命名空间 、C++输入&输出、缺省参数和函数重载
C++总计63个关键字,C语言32个关键字 ps:下面我们只是看一下C++有多少关键字,不对关键字进行具体的讲解。后面我们学到以后再 细讲。
走在努力路上的自己
2024/05/26
720
【C++修行之道】命名空间 、C++输入&输出、缺省参数和函数重载
C++一分钟之-可变模板参数与模板模板参数
在C++中,模板是实现泛型编程的强大工具。它们允许我们编写可以处理多种数据类型的代码,从而提高代码的复用性和灵活性。随着C++11的引入,可变模板参数和模板模板参数进一步增强了模板的表达力和通用性。
Jimaks
2024/07/21
3470
C++一分钟之-可变模板参数与模板模板参数
在C++中,模板是实现泛型编程的强大工具。它们允许我们编写可以处理多种数据类型的代码,从而提高代码的复用性和灵活性。随着C++11的引入,可变模板参数和模板模板参数进一步增强了模板的表达力和通用性。
Jimaks
2024/07/22
1810
C# 4.0命名参数和可选参数
Named And Optional Arguments - 命名参数和可选参数
跟着阿笨一起玩NET
2018/09/18
5820
python3中的缺省参数和命名参数
def test(a,b):result=a+bprint("result=%d"%(a+b))test(11,22)test(11,1)test(22,1)def test1(a,b=1):#b=1 是一个缺省参数result=a+bprint("result=%d"%(a+b))test1(11)test1(11,b=22) #此处b=22 是一个命名参数
狼啸风云
2020/02/11
1.5K0
【c++】模板进阶> 非类型模板参数&&模板的特化&&模板的分离编译详解
类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称
用户10925563
2024/06/04
1320
【c++】模板进阶> 非类型模板参数&&模板的特化&&模板的分离编译详解
【C++学习】:命名空间、输入输出和缺省参数全面解析
在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。因此,c++引入了命名空间,有效的解决这个问题。命名空间的作用是对标识符的名称进行本地化,避免命名的冲突。
屿小夏
2024/01/22
1720
【C++学习】:命名空间、输入输出和缺省参数全面解析
【C++入门】命名空间、缺省参数、函数重载
在正式进入C++之前,我们首先要对C++有一个基本的认知。这里我就不过多的进行描述了,有兴趣的可以去网络搜索一番。总而言之,从名称上面我们也可以看得出来,C++是在C的基础上进行不断地优化发展。事实上确实是这样,C语言中90%以上的语法在C++中都适用。
诺诺的包包
2023/02/20
6880
Google C++ 编程风格指南(六):命名约定
最重要的一致性规则是命名管理. 命名风格快速获知名字代表是什么东东: 类型? 变量? 函数? 常量? 宏 … ? 甚至不需要去查找类型声明. 我们大脑中的模式匹配引擎可以非常可靠的处理这些命名规则.
CPP开发前沿
2022/03/03
1.8K0
c++模板学习08之类模板对象做函数参数
#include<iostream> #include<string> using namespace std; //类模板对象做函数参数 template<class T1,class T2> class Person { public: Person(T1 name, T2 age) :name(name),age(age){} T1 name; T2 age; void showPerson() { cout << "姓名: " << name << " 年龄:" << age <<
大忽悠爱学习
2021/03/02
6180
C++模板取函数参数类型和返回值类型的方法
static_assert(is_same_v<decltype(f), int(int, short, float)>);
用户7886150
2021/02/03
4.2K0
c++之类模板对象作函数参数
三种方式: 1.指定传入的类型(这种最常用) 2.参数模板化 3.整个类模板化 #include<iostream> using namespace std; template<class T1,class T2> class Person { public: T1 name; T2 age; Person(T1 name, T2 age) { this->name = name; this->age = age; } void sh
西西嘛呦
2020/08/26
7100
【c++入门】命名空间,缺省参数与函数重载
C++是一种与C语言紧密相关的编程语言。尽管它继承了C语言的许多特点,但C++引入了面向对象编程等概念,并增加了一些自己的特性和关键字来支持这些特性。比较C++和C语言的关键字,我们可以发现以下特征:
用户11029103
2024/03/24
2020
【c++入门】命名空间,缺省参数与函数重载

相似问题

关于如何命名注释的指南

10

作为模板参数的C++行为

10

命名惯例指南值得关注吗?

70

"C++模板:完整指南“(c) 2002 - C++11的最新进展?

10

C++中的模板函数和函数模板

50
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文