本蒟蒻的刷题时的码风~

本文根据我个人的变化持续更新

写算法题的风格嘛…当然不会想写正经项目这么严谨的啦~

项目代码规范 铁则: 规范, 标准, 简明, 统一, 严格
算法题码风: 去你的规范, 我能看懂就行了

2333, 开个玩笑, 下面是一段示例程序, 没有任何用途, 只是用来说明风格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// A.cpp - PXXXX // 文件头注释(一般我懒得写)
#include <iostream> // 在头注释后不空行
#include <fstream> // 相同类型头文件并列
#include <cmath> // 先C++标准库头文件, 再C++中的C头文件
#include <cstdio> // 不使用万能头文件
#include <cstdlib> // 不依赖头文件本身的包含关系

#define BUFSIZE_ 1024 // 使用宏常量代替const变量(C++11前)
#define INF 0x3f3f3f3f // 宏常量的命名全部大写
#define mid(l, r) (((l) + (r)) >> 1) // 宏函数小写, 参数和函数体必须使用括号

constexpr int BUFSIZE = 1024; // 使用constexpr表达式替代宏常量(C++11起)

using namespace std; // 扩展std作用域的访问域, 前后空一行
//注: 项目中谁敢写我打死他

struct Point { // 大括号不换号, 前有空格, 定义前后空行
int x; // 简单的类(没有成员函数)使用struct结构体
int y; // 成员变量分开定义
// 使用简单构造函数或默认初始化
};

class Rect { // 复杂类使用class定义
public: // 按照public, protected, private, 先函数后变量顺序
Rect(Point &&rlt, Point &&rrb) {
// &和*紧贴在参数一侧
lt = rlt;
rb = rrb;
}
~Rect() { } // 成员在过程中有new的在析构函数中delete, 没有则不写析构函数
int getSize() { // 函数遵循小驼峰命名法
return abs((lt.x - rb.x) * (lt.y - rb.y));
}
public: // 成员函数和成员变量的访问限定符要分开写
Point lt; // 变量命名遵循小写下划线法
Point rb;
};

// 全局变量定义区(能不用全局变量绝对不使用全局变量!)

inline int max(int a, int b); // 声明函数
inline int min(int a, int b); // 这里不声明主函数

int main() { // 主函数类型为int(), 定义在最前面
int a, b, c; // 同类型变量连续定义并随手初始化
a = b = c = 0; // 使用连等代替多个赋值式
if (a != 0) b = 1; // 短体语句不换行
else b = 2, c = 7; // 短小的连续同类操作使用逗号表达式
return 0; // 主函数必须显式返回0
}

inline int max(int a, int b) { // 简单的函数声明为内联函数
return a > b ? a : b;
}

inline int min(int a, int b) {
return a < b ? a : b;
}