`
yesjavame
  • 浏览: 687296 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

模板参数名命名惯例

阅读更多

模板参数名命名惯例

以下模板参数名命名惯例来自于stlsoft,详细说明于《Extended STL》。

模板参数一般是一个或者两个大写字母,
例如T(type/value-type)、S(sequence/string)、
C(container/character)、VP(value policy type)等等。

这样做有两个原因。

首先,全大写字母的单词可能被宏定义。
相反,宏定义一般不会仅有一个或两个字符。
所以模板参数和宏定义没有命名冲突。

(我们不应该自定义特别短的宏。
如果一个库定义了一两个字符的短宏,
一般来说,它绝不会是一个可靠的库。)

第二,我们将在类中定义成员类型,其名字必须不同于模板参数名。

以下代码中,成员类型和模板参数同名,无法通过编译:

template <typename iterator>
struct thing
{
typedef iterator iterator; // Compile error
};

必须如下代码更改:

template <typename I>
struct thing
{
typedef I iterator;
};

在定义模板类时,有一个惯例,
即一开始就以上面短小的模板参数名为基础,
定义各个成员类型。


查看StlPort代码:

template <class _Key, class _Tp, ...>
class map
{
typedef map<_Key, _Tp, _Compare, _Alloc> _Self;
public:
typedef _Key key_type;
typedef _Tp data_type;
typedef _Tp mapped_type;
typedef pair<const _Key, _Tp> value_type;
typedef _Compare key_compare;

...
}

其模板参数命名的原则是一致的:较短,然后立即定义较长的类型名。
用前导下划线防止命名冲突。

(转载请注明来源于金庆的专栏)
分享到:
评论

相关推荐

    DFM、DFA报告模板.pdf

    10. **PCB尺寸要求* 标志符和命名惯例**:设定统一的标识和命名规则,便于识别和管理PCB上的不同区域、元器件和走线,提高设计的清晰度和一致性。 11. **波峰焊接条件**:规定波峰焊接工艺的参数,如焊接温度、时间...

    tutorials:编码惯例

    3. 类命名:类名一般采用大驼峰式(PascalCase),如`MyClassName`,表示它是一个对象的模板。 4. 常量命名:常量名通常全部大写,单词间用下划线分隔,如`MAX_VALUE`,以表明它们在程序中不应被修改。 二、注释...

    软件编码规范

    - **变量和参数命名**:变量名和参数名采用小写字母开头的名词或名词短语。 - **集合命名**:集合变量的命名通常包含集合所存储的对象类型的复数形式。 #### 6. 编程规范 编程规范是确保代码质量和可维护性的关键。...

    Odoo的网页模块QWEB简述.doc

    函数将传入一个名为 instance 的参数,这个参数代表当前 OpenERP 的 Web 客户端实例,包含了所有相关当前会话数据,以及所有 Web 模块的变量。 命名空间 在 OpenERP 中,命名空间是通过 instance 对象创建的,例如...

    数据库设计和编码规范.docx

    - **避免混淆**: 避免使用系统本身的命名惯例,以区分自定义对象与系统内置对象或关键词。例如,不建议将存储过程命名为以`sp_`或`xp_`开头的名字,因为SQL Server的系统存储过程以`sp_`开头,扩展存储过程以`xp_`...

    i-cut Production Console 2.0 用户手册.pdf i-cut生产控制台

    ##### 5.2 命名惯例 在i-cut Production Console 2.0中,采用了清晰明确的命名规则来组织各种资源。比如,“Mis Trabajos”用于显示用户的所有待处理任务,“Trabajo Abierto”则指向当前正被编辑或查看的任务。...

    ThinkPHP配置指南和参考

    - **文件名**:所有配置文件均命名为 `config.php`。 - **格式**:采用返回数组的方式定义配置项,例如: ```php ( 'DEBUG_MODE' =&gt; true, 'URL_MODEL' =&gt; 2, ); ?&gt; ``` - **注意事项**:配置参数不区分大小...

    thinkphp3.0完全中文开发手册

    - **模板命名规则**:遵循一定的命名规则。 **7.2 模板赋值** - **数据传递**:将数据传递给模板进行渲染。 **7.3 模板输出** - **输出控制**:控制模板的输出内容。 **7.4 模板替换** - **模板替换**:支持...

    人的脸部自动检测标识

    由于没有具体的文件内容,这些只是根据常见命名惯例的推测。 总的来说,人脸自动检测标识是计算机视觉领域的重要技术,它结合了图像处理、特征提取和机器学习算法,能够在复杂的图像环境中有效地识别和定位人脸。...

    ThinkPHP3.0_完全开发手册(1).pdf

    惯例配置是指根据框架的约定来设置配置项,例如默认的数据库连接参数等。 **3.3 项目配置** 项目配置允许开发者为自己的项目定制配置项,通常在项目的配置目录中设置。 **3.4 调试配置** 为了方便调试,ThinkPHP...

    ThinkPHP3.0_完全开发

    - **命名规范**:提供代码和文件命名的规则,确保代码的可读性和一致性。 - **特性概述**:列举ThinkPHP3.0的主要功能,如自动加载、缓存机制、安全特性等。 - **系统流程**:描述请求处理的整体流程,从用户请求...

    tp框架手册开发

    - **命名规范**:为确保代码的一致性和可读性,框架提供了一套严格的命名规则。 - **MVC分层**:详细介绍了MVC设计模式在ThinkPHP中的具体实现。 - **CBD架构**:CBD架构是ThinkPHP的一个重要特性,指代...

    MAAB_MathWorks Automotive Advisory Board_Version3.0.docx

    - **na_0035: Adoption of naming conventions:** 鼓励采用标准化的命名惯例,以提高项目的可维护性。 **4.2 Model Content Guidelines** - **jc_0201: Usable characters for Subsystem name:** 子系统的名称可以...

Global site tag (gtag.js) - Google Analytics