Christopher_Yan's Coding Standard
PART I 位置 & 空位规范
{
{
1 头文件置于源代码最顶部,左括号左边空一格,且长度不严格递减。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cstring>
2 宏定义置于头文件下方空一行处。
#define ls u << 1
#define rs u << 1 | 1
#define ls u << 1
#define rs u << 1 | 1
using
3 结构体定义置于 using 语句下方空一行处,定义以空行间隔。
struct Edge
{
/* */
};
struct Edge
{
/* */
};
4 主函数位于程序最尾,其他函数位于主函数之上,以空行间隔。
int Gcd() { /* Code */ }
int Gcd() { /* Code */ }
int main() { return 0; }
5 < = > || && == + - / ? : 左右两边加空格
if (a + b == 0 || c > d == 1 ? e : f);
if (a + b == 0 || c > d == 1 ? e : f);
}
PART II 命名规范
{
{
1 结构体以大写字母开头的较完整单词命名。
struct Edge { };
struct Edge { };
2 函数(main函数除外)以大写字母开头的单词命名。
int Gcd() { /* Code */ };
int Gcd() { /* Code */ };
3 const变量以大写大写单词或字母命名。
const int N = 1e5, MOD = 1e5;
const int N = 1e5, MOD = 1e5;
4 普通变量命名只得以单个大小写字母或小写单词命名。
int a, b[N], T;
int a, b[N], T;
5 特殊的固定变量名称:
{
T : 数据组数
n : 点数
m : 边数
u : 编号
x : 数值
ecnt : 边数量
e[] : 邻接表
f[] : 记录每个点邻接表的第一条边
dis[] : 距离数组
}
{
T : 数据组数
n : 点数
m : 边数
u : 编号
x : 数值
ecnt : 边数量
e[] : 邻接表
f[] : 记录每个点邻接表的第一条边
dis[] : 距离数组
}
}