预编译指令:
顺序:
-
$ pragma $
-
$ include $
-
$ define $
-
$ undef $
缩进:
$ define $ $undef $ 继承上层缩进,其余不缩进。
如果有多层嵌套 $#if $ $ #endif $ $#endif $后应有对应的注释标识出与其对应的 $#if $。
尽量不要适用 $#define $而使用 $const $, $typedef $, $inline $。
所有预编译命令不应缩进。
写法:
-
$ include $ 中能使用 $ < > $ 的尽量不要使用 $ " " $ ;
-
$ include $ 中不使用空格。
-
$ define undef $ 中允许被定义的宏为全部大写或全部小写,其余情况不允许使用大写。
命名空间:
写法:
总是使用 $ using namespace std $ 或 导入
- $ using $ $ std::cin $
- $ using $ $ std::cout $
- $ using $ $ std::endl $
- $ using $ $ std::min $
- $ using $ $ std::max $
等在代码出现过的 $ std namespace $ 中的函数。
命名空间中可以使用 $ #define $ ,但必须
在结尾处 $ #undef $ ,且 $ #define $ 指令应置于命名空间的开头处。
任何大型数据结构使用其大写简写为名称的单独 $ namespace $ , 如
$ namespacequad KDTquad namespacequad SGTquad namespacequad TRP, $ 并总是在命名空间的结尾处 (}) 后缀一分号 $ ';' $ ,例如:
namespace SGT
{
#define LCH tree[inx].ch[0]
#define RCH tree[inx].ch[1]
void func1()
{
// .....
}
#undef LCH
#undef RCH
};
顺序:
应置于代码开头处的所有预编译指令之后。
缩进:
继承上层缩进。
花括号:
写法:
使用花括号时有两种规则:
- 使用 (Allman) 式花括号,也即花括号换行。 例如:
void Func1()
{
for (;;)
{
// ...
}
if (case)
{
// ....
}
else
{
if (case 2)
{
// ..
}
else { Func2(); return; }
}
}
- 或者花括号的左右边都在同一行,右括号与左花括号之间有一空格,例如:
for (;;) {Func1();Func2();}
注意:
即使内部只有一条语句的 $ if $ 与 $ for $ 等也必须用大括号括起来。
行:
写法:
每行可以有多个(两个及以上)语句。但任何时候,每行不应太长。
多个意义独立的代码块之间应用一个空行隔开 ;
非空行尾不应有多余的空格 ;
$ usingquad namespacequad std; $ 后有一空行 ;
函数、成员函数、结构体、全局变量块之间必须用空行隔开。
缩进:
继承上层缩进 。
指针与引用:
写法:
(OI) 代码中不使用指针。
任何引用前的标识符 $ '&' $ 和引用变量类型标识符之间用一个空格隔开,如
void Func1(int &q, int &t)
{
int a, b;
int &aref = a, &bref = b;
}
缩进:
继承上层缩进 。
函数与变量:
写法:
函数:
函数采用大驼峰命名法,选择性地加入下划线 $ '_' $ ,采用对应算法缩写,如 $ KMP, CRT, NTT,CDQ; $ 如:
void Update()
{
···
}
int Qry()
{
···
}
Mat Gauss_Elimination()
{
···
}
空函数体必须为以下格式:
void Func1() {}
变量:
变量可以以一个小写字母命名;
全局数组名可使用1个大写字母+0~2个数字命名,如A, T1,F01;
简短的inline函数,如min, upd(用作数据结构中的update操作);
常量可以大写字母命名,如N, M;
临时变量可以以下划线开头。
缩进:
继承上层缩进 。
空格:
写法:
-
逗号前后都不能有空格。
-
冒号的两侧必须有一空格。
-
$ '++' $ $ '--' $ 前/后不需空格。
-
形如 $ vector< pair<int, int> > $ 的声明,每对 $ <> $ 前后空格需要对称。
-
$ '::' '.' $ 的两侧不应有空格。
-
初始化列表前后不需空格,如 $ max({a, b, c}); $ 。
缩进:
继承上层缩进 。
注释:
缩进:
继承上层缩进。
写法:
-
单行注释使用 (//) ,之后应有一空格,如 $// do $ $something $ 。
-
多行注释使用 $/* $ (*/) ,其中 (/*) 和 (*/) 应独占一行,且 (/*) 前和 (*/) 后应有一空行,例如:
int func1()
{
int a=1,b=2;
/*
return 3;
*/
return a+b;//a+b=3
}