模板类型的命名约定?

Fra*_*ank 24 c++ templates naming-conventions

传统上,模板类型的名称只是一个大写字母:

template<class A, class B, class C>
class Foo {}; 
Run Code Online (Sandbox Code Playgroud)

但我犹豫不决,因为它是非描述性的,因此难以阅读.所以,这样的事情会不会更好:

template<class AtomT, class BioT, class ChemT>
class Foo {}; 
Run Code Online (Sandbox Code Playgroud)

我也倾向于认为以下不是一个坏主意:

template<class ATOM, class BIO, class CHEM>
class Foo {}; 
Run Code Online (Sandbox Code Playgroud)

它使它们脱颖而出(而且,它又是大写字母).你怎么看?

Jar*_*Par 32

对于C++模板,我有几种模式

如果只有一个模板参数,我将其命名为T(或嵌套模板的U,V).

如果有多个参数并且使用不是很明显,那么我使用前缀为T的描述性名称.例如,TKey,TValue,TIdentifiier等......这使得参数在整个模板使用过程中都很容易被发现.

我会避免全部大写版本.大多数人使用C/C++中的所有大写标识符来表示宏定义.为模板参数重复该模式可能会使人们感到困惑.

  • ...也可能会使编译器感到困惑。尝试#include &lt;windows.h&gt;模板&lt;class ATOM&gt;类Foo {}; (2认同)

Myk*_*yev 8

我使用约定TName作为模板参数,使用NameT作为存储模板参数.

template <typename TFirst, typename TSecond>
class Templated
{
    typedef TFirst FirstT;
    typedef TSecond SecondT;
}

typedef Templated<int, std::string> MyTemplated;
...
const MyTemplated::FirstT size;
Run Code Online (Sandbox Code Playgroud)