编码规范
这里整理仓库当前采用的代码写法。
命名
- 类型、类、结构体、枚举类型、成员函数使用
PascalCase。
class Logger
{
public:
static void Init();
};
- 局部变量、函数参数、数据成员使用
snake_case;数据成员以_结尾。
static inline bool initialized_ = false;
- 宏、错误码、日志宏、枚举值保持全大写风格。
#define ASSERT(arg) ...
#define XR_LOG_INFO(fmt, ...)
enum class ErrorCode : int8_t
{
OK = 0,
BUSY = -15,
OUT_OF_RANGE = -17
};
命名空间与类型别名
- 命名空间使用独立换行的
Allman风格,结束处保留注释。
namespace LibXR
{
}
} // namespace LibXR
- 类型别名优先使用
using;已有typedef保持现状。
using Callback = LibXR::Callback<uint32_t>;
typedef RBTree<uint32_t>::Node<Block>* TopicHandle;
文件组织
.cpp先包含对应头文件,再包含系统头和项目头。
#include "async.hpp"
#include "libxr_def.hpp"
#include "thread.hpp"
- 头文件中的 include 保持现有顺序,不为整理做无关重排。
#include "app_framework.hpp"
#include "async.hpp"
#include "database.hpp"
- 头文件统一使用
#pragma once。
#pragma once
版式
- 使用
Allman大括号风格。
class Thread
{
public:
enum class Priority : uint8_t
{
IDLE,
LOW,
MEDIUM
};
};