Alex_Cui 的博客

Alex_Cui 的博客

本菜鸟的算法题代码风格

posted on 2019-03-21 20:49:29 | under 未分类 |

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

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

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

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

// 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;
}