一些 cpp 的编码规范

什么时候使用前置声明

为了防止循环引用的情况发生

避免头文件的使用者引入过多的无用的头文件(希望屏蔽底层的实现细节)




是否需要有 assert

assert 只在 debug 的模式下才会生效,而 debug 模式并不会是生产模式下使用的,因此最好只在调试阶段使用

可以使用 static_assert,主要是给模板用的




函数的命名规范

当 socket 收到具体的数据的时候,使用 Onxxx,例如 onTcpMessage,onUdpMessage




关于 auto 的使用规范

在标准库的迭代器里面使用,或者标准库函数里面放 lambda 表达式时,(入参可以为 auto,14之后是可以的)

在返回值确定的情况下(例如说 make_shared_<int>,又或者说是 xxx.get_future()

或者说变量的命名清楚确定的情况下(例如 afterResult 等)




关于 log 的打印和等级

使用 error 的情况:解析数据的过程中出现了问题,或者数据中有意料之外的情况(比如说2012的版本,是没有 tls 的接口的);读取数据发生错误,或者长度不符合预期

使用 debug 的情况:正式的代码中是不能有 debug 的代码的,debug仅在调试和测试的时候使用

使用 info 的情况:代码执行某个流程开始或者结束

使用 warn 的情况:当收到了报文,但在校验的时候发生了错误




shared_ptr,unique_ptr 还是 raw point 的使用规范

对于智能指针 std::unique_ptr/std::shared_ptr 到底是传入 引用还是值就目前的场景来看,感觉更多的时候需要传入的是值




对于 function 和 lambda 的区别分析

对于 funciton,传递 引用 值 右值 那个效率更高

lambda 转 std::function<void()>& 为什么不行?


 上一篇
开发工具使用之 Git 开发工具使用之 Git
Git 常用指令add# 将某个文件的修改提交到暂存区 git add filename # 将所有发生过修改的,以及新增的文件都添加到暂存区中 git add . branch# 创建分支 git branch branch_n
2024-05-04
下一篇 
开发工具使用之 Cmake 开发工具使用之 Cmake
0、通用的 CMakeLists 模板目前在 linux 下使用的 cmake 版本为 3.16,而在 windows 下使用的版本为 3.20 # 指定 cmake 所需的最小版本 cmake_minimum_required(VERSI
2023-11-21
  目录