Ender's Code Style for OI
本文介绍博主在OI中常见代码风格,也用来规范自己。
本文内容自发稿开始保证实施
Ender’s Code Style for OI
概览
可以使用万能头文件#include<bits/stdc++.h>
使用using namespace std;
时,应放在#include
下一行。
结构体应放于所有函数之前,main
函数应放于程序末尾。
缩进
所有同级命令均应为等长缩放长度,所有被包含的命令应使用4个空格或等长Tab缩进。
大括号
对于所有需要大括号的命令和函数,左大括号不应换行,左边必须有一个空格;右大括号与命令应为等长缩进,例:
1 | // 结构体 |
对于所有几乎只包含一条return语句的函数,右大括号可以不换行,其余均应换行,例:
1 | bool cmp(int a,int b) {return a>b;} |
行
除循环嵌套以外,如果包含的命令只有一行,应不使用大括号且不换行,例:
for(int i = 1; i <= n; i++) cin >> a[i];
组合使用的代码可以不换行且应以空格可开,例:
a = q.top(); q.pop()
函数
一般情况下,main
函数声明时省略其括号内的void
,最后一句必须为return 0;
,例:
1 | int main() { |
对于比赛或者Cena提交,需将文件x相关d代码写为两个分开的函数,并在主函数开头以及结尾调用,例:
1 | inline void fi() { |
变量声明
局部变量在需要时定义,除循环以外应尽量减少重名。
如果一个变量更改数值非常频繁,应使用register
注册变量,例:
for(register int i = 1; i <= 2147483647; ++i)
如果一个变量确定不包含负数,且数值较大,则应使用unsigned
无符号类型。
空格
除文章其他地方规定以外,为了便于阅读检查,可在语句中适当添加空格,例:
1 | int a, b, c; |
命名
不相关的数组与变量应该分行声明。
所有函数、变量、参数名都必须使用“驼峰命名法”,且除辅助变量都必须有相应意义。
结构体首字母应大写且名称有意义。
例:
1 | struct Edge { |
类型别名、常量类型变量与宏定义
较大的数应使用const
定义而不是#define
,且其名称应为全大写。
较长类型名称应使用typedef
而不是#define
。
当某类型代码大量使用时可以使用#define
来缩短代码长度。
例:
1 |
|