是否有一个好的/广泛采用的c ++模板编码约定/标准?

Dan*_*n O 3 c++ templates coding-style

我喜欢编码标准.在编写C++时,我喜欢编码标准.一个好的编码标准为语言添加了上下文,使得难以解析更容易.

我认为每个人至少都熟悉一些常用的标准:

  • 成员变量前缀为'm'或'm_'
  • 类前缀(通常是项目特定的,即在Qt中所有类名称都以'Q'为前缀)
  • 包括保护惯例,例如"将文件名全部包含,替换'.' 用'_'"
  • 三个规则

有很多像这样的小C++规则.不幸的是,我从未设法找到与模板相关的指南.我认为模板参数最流行的名称是'T',但它没有意义,除非模板很明显,否则它会使代码更难读.

无论如何,我遇到的核心问题是模板难以阅读,我认为可以使用一些约定来使它们更容易阅读.有没有人知道一个广泛应用的约定,使模板化的代码更容易阅读?

Mik*_*son 7

只是加入我的盐.我认为C++编程世界中最重要的两个库是标准模板库和Boost库.我个人试图大多符合这些库中占主导地位的符号.也就是说,模板参数的类,函数,数据成员,typedef,枚举等的下划线小写名称和CamelCase(无下划线分隔).通常,您还希望模板参数具有合理的名称.一个好的做法是给它们应该实现的概念的名称(例如,应该是实现ForwardIteratorConcept的迭代器的模板参数应该被命名为ForwardIterator).

您提到的约定(成员的"m"和类的大写字母起始名称)是一种纯粹的面向对象的编程约定("纯粹"的含义如下:没有任何其他编程范例,如泛型编程或模板元编程).它主要用于Java(或者是编程C++的Java"natives").我个人不喜欢它,知道很少有人这样做.在使用这种表示法的框架或项目中工作时,我总是有些恼火,它使用标准库,增强库以及名称空间的整体正确使用进行了解释.

  • 但是,我想指出,有些人喜欢m前缀的原因不是为了避免名称冲突,而是为C++添加上下文,这是众所周知的无上下文.在处理将被许多其他人阅读的代码时,我看到它的好处. (2认同)