本文介绍本人在 OI 中常用的代码规范
概览
所有的 #include
指令必须放置于整个程序开头
在.cpp文件中使用 using namespace std;
main
函数应该放置于整个程序末尾
不应该使用 int
代替 bool
表示逻辑值
预编译指令
#include
中,C 标准库头文件必须使用 c
前缀,而不是 .h
后缀
#include
中,C 标准库头文件应该放置于 C++ 标准库头文件前,其它头文件(如果有)应放置于最后
所有的预编译指令(包括 #ifdef
等)不能缩进
缩进
对于每个代码块,使用 4 空格或等长的Tab转空格(可以尝试Code::Blocks的默认自动缩进)
花括号
花括号必须遵循以下两种写法之一,前一种被称为「花括号不换行」,后一种被称为「花括号换行」
对于「花括号不换行」,左花括号的左边必须有且仅有一个空格
对于「花括号换行」,左花括号必须与上一级代码块的缩进相同
所有右花括号必须与上一级代码块的缩进相同
|
|
行
除 for
中的三个语句外,每行不能有超过一个语句如果需要一行内求值多个表达式,可以但减少使用等效的逗号表达式替代
多个意义独立的代码块之间应该用空行隔开
右花括号前不应该有多余的空行
不应该有两个连续的空行
非空行尾不应该有多余的空格
所有的 #include
指令之后必须有一个空行
如果有 using namespace std;
,则必须紧跟在 #include
后的空行后,之后必须一个空行
函数、成员函数、结构体、全局变量块之间必须用空行隔开
|
|
函数
main
函数的返回值类型必须是 int
,不可以省略 return 0;
空函数体可以使用 {}
传参时,应该根据实际需要使用「引用」、「const
引用」和「值传递」
变量
在不影响代码可读性的前提下减少变量
局部变量必须在用时定义,变量名不应该与上一个块中的变量重名,可以与全局变量重名
只在一个函数内使用到的需要全局空间(如大数组)或生命周期的变量,必须定义为 static
的局部变量
空格
在不影响代码可读性的前提下减少空格
||
或 &&
之类多条件并列的运算符左右必须要空格
=
+
-
.
->
::
之类两边不加空格
语句末尾打死不加空格(除非写Markdown)
|
|
指针与引用
在描述类型名时,指针符号 *
和引用符号 &
与左侧的类型名之间必须有一个空格,与右侧的其它关键字之间不能有空格,如 char *const
或 int *&
在定义变量、函数返回值、参数时,指针符号 *
和引用符号 &
与左侧的类型名之间必须有一个空格,与右侧的变量、函数、参数名之间不能有空格
命名
所有结构体、函数、变量、参数名必须使用驼峰命名法,其中结构体名首字母必须大写,其它首字母必须小写 为方便,命名中的单词可以使用缩写,函数、变量、参数名可以用一个小写字母代替全局数组可以命名为一个大写字母
|
|