Bug天敌:代码风格规范
俗话说:“字如其人。”,我说:“代码如其人。”
养成规范的代码风格,可以有效地减少bug的产生,提高阅读程序的效率,使程序更易被理解。
在开发当中,代码风格是一名程序员基本功力的体现,可以说是非常重要的。
在竞赛当中,整齐的代码可以缓解环境带来的压力,更易发现其中的逻辑错误,是提高成绩的有效方法。
参考了Menci学长的博客,综合我的编程经历,总结出一下代码规范。
概览
-
头文件("include")应放在程序的最开头,能使用 “<>” 包含的,一律使用 “<>” 包含,其他才情况使用双引号。
-
"include" 和具体头文件之间应有一个空格。
-
不要使用 "using namespace std;" 。
-
不要定义宏,使用 "const" 或 “typedef” 代替。
-
统一使用一个Tab或四个空格进行缩进。
函数
-
所有函数均需要正确返回值,不能用 "int" 来代替 "void" 或其他类型。
-
函数名后应加一个空格,再接参数。
-
大括号应与函数名在同一行,同时与函数的参数有一个空格。
-
调用函数时,多个参数应用一个空格隔开。
举个栗子:
void func (int i, int j) {
//something
}
空格(空行)
-
等号、加号、减号等各种符号左右应各有一个空格。
-
一行有多个并列语句时,应用空格隔开。
-
头文件,变量定义,函数的各个块之间应有一个空行隔开。
-
一个函数中实现不同内容时也应有一个空行隔开
举个栗子:
#include <iostream>
#include <cstdlib>
const int N = 1e5 + 5;
int n, m, k;
int func (int i, int j) {
//something
}
int main () {
cin >>n >>m >>k;
for (int i = 1; i <= n; ++i) {
//something
}
int ans = max(n, m, k);
cout <<ans <<endl;
return 0;
变量
-
循环变量使用 i, j, k, p, q 等。
-
禁止使用全局变量。
-
不直接使用常数,应将其定义为常量。
-
常量命名为大写英文缩写。
-
变量命名不能重复(函数内外也不行)。
-
变量用小写英文缩写命名。
-
指针变量与引用变量中的 “*” 和 “&” 应靠近类型名称,不能靠近变量名。
面向对象
(这点仅针对开发编程)
-
只能使用 “class”,而不能使用 “struct”。
-
“class” 中的 public 类型应放在最前面。
-
“class” 中的变量只能是 private 或 protected 类型,可以设有更改和查询变量的函数,但查询函数要有 “const” 修饰。
【信息学竞赛从入门到巅峰】,一个专注于分享OI/ACM常用算法及知识的公众号。