CPP {CPP编程规范, CPP命名规范}
CPP编程规范
错误
#函数的参数 不要写成是个函数#
即不要写Func( Func_0())
这样的代码;
因为对于Func( D, F0(), D, F1(), D)
其中三个D
的值 并不是你想象的那样从左到右 (比如第一个D 是没有收到F0/F1
函数影响的, 这是错误的);
参见 @LINK: (https://editor.csdn.net/md/?not_checkout=1&articleId=136750205)-(@LOC_0)
;
CPP命名规范
笔记
对于`AaaBbb`文件, 他的位置是`CccDdd/AaaBbb`, 此时目录要写成*全大写*(`CCCddd`)
同时这个文件 要使用`CCCddd`的命名空间;
否则的话 命名空间的名字 是驼峰的 不是大写的 (比如该文件里 还有子命名空间 参考__SUPIMO文件);
命名规则: {驼峰大写`AaBb_CcDd`, 驼峰小写`aaBb_ccDd`, 起伏大写`AAbb_CCdd`, 起伏小写`aaBB_ccDD`};
. 命名中 如果使用`_`作为*中间连接符*, 你必须保证至少含有2个单词, 即形如`AaBb_?` 否则(`驼峰小写aa_bb 和 起伏小写aa_bb`就冲突了);
. 起伏小写 必须形如`aaBB...` 不可以是`aa`, 否则他和驼峰小写就冲突了;
`_驼峰` 他一定是参数(宏参数/模板参数/函数参数);
`驼峰_` 一定是*类型*(using别名/class类/模板参数的类);
`__?`: 临时/局部的东西;
`___?`: 模板/正式的东西;
宏:
+(命名规则): `起伏`;
`.` 虽然说他可能和系统宏(比如`NULL`)冲突, 但大概率不会的
`.` 全局宏 用大写, 否则用小写;
. 最好不要用单个单词, 因为此时驼峰和起伏就冲突了;
命名空间:
+(命名规则): `起伏_`;
`.` 全局命名空间 用*起伏大写*, 内嵌命名空间 用*起伏小写*;
. 最好不要用单个单词, 因为此时驼峰和起伏就冲突了;
类型(class/struct/using/typedef):
+(命名规则): `驼峰_`
变量:
+(命名规则): `驼峰`
函数:
+(命名规则): `驼峰`
参数(函数参数/模板参数), 必须形如`_驼峰小写`;
起伏大写: 宏
起伏大写_: 命名空间
起伏小写: {函数类的static, } (起扩大作用域的作用)
起伏小写_:
驼峰大写: 类的public
驼峰小写: 类的private, 局部变量, 全局static
驼峰大写_: 类名
驼峰小写_:
_?: 参数(宏参数,模板参数,函数参数)
__?: 临时使用;
___?: 模板(比如使用别人的东西);
?加_: 类型
如果重名, 末尾(非`_`)字符重写 比如`_?x_`重名了 改成`_?xx_`;
@DELI;
#define AAbb_ "Hh"
namespace AAbbb_{
namespace AAbbb_{
}
}
//>> 非static的全局
template< class _aaBb, int _aaBbb> array<_aaBb, _aaBbb> AaBb;
template< class _aaBb, int _aaBbb> void AaBbb( int _aaBbbb){
//>> 函数内 你想提升作用域, [驼峰小写->驼峰大写->起伏小写->起伏大写];
}
using AaBbbb = int;
template< class _AaBb, int _AaBbb> struct AaBb_{ // 模板参数大写, 否则太容易重名
public: // 非成员
static int AAbb;
static void AAbb(){}
using AaBb_ = int;
struct AaBb_{};
private: // 非成员
static int aaBB;
static void aaBBB(){}
using aaBBBB = int;
struct aaBBB{};
public: // 成员
const int AaBb;
void AaBbb(){}
private: // 成员
const int aaBb;
void aaBbb(){}
};
static bool __firstENTERED = 1;
if( __firstENTERED){
... // 比如connect, 即只会执行1次的函数;
}
//>> static 全局
static int aaBb = 1;
static void aaBbb(){}
@DELI;