C++代码风格、注释规范

DoxyGen一个把c++注释生成文档的工具

DoxyGen快速入门

谷歌C++风格指南

参考文章链接

  • 所有头文件都应具有保护 防止多重包含
#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_

...

#endif  // FOO_BAR_BAZ_H_
  • 仅当函数较小(例如 10 个)时才定义内联函数 行或更少。
  • 尽可能避免使用前置声明
// b.h:
struct B {};
struct D : B {};

// good_user.cc:
#include "b.h"
void f(B*);
void f(void*);
void test(D* x) { f(x); }  // Calls f(B*)
  • 非成员函数和静态成员函数在 某些情况。将非成员函数放入 命名空间可避免污染全局命名空间
  • C++允许您在函数中的任何位置声明变量。 我们鼓励您在本地范围内声明它们 可能,并且尽可能接近第一次使用
int i;
i = f();      // Bad -- initialization separate from declaration.
int i = f();  // Good -- declaration has initialization.
int jobs = NumJobs();
// More code...
f(jobs);      // Bad -- declaration separate from use.
int jobs = NumJobs();
f(jobs);      // Good -- declaration immediately (or closely) followed by use.
  • 禁止使用具有静态存储持续时间的对象
  • 构造函数永远不应该调用虚函数
  • 如果函数超过 40 行,请考虑 是否可以在不损害结构的情况下分解
  • 命名规则
1.文件名应全部小写,并且可以包含 下划线 () 或短划线 ()

2.类型名称以大写字母开头,大写 每个新单词的字母,没有下划线
// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...

// typedefs
typedef hash_map<UrlTableProperties *, std::string> PropertiesMap;

// using aliases
using PropertiesMap = hash_map<UrlTableProperties *, std::string>;

// enums
enum class UrlTableError { ...

3.变量(包括函数参数)和数据成员的名称为(全部小写,单词之间带有下划线)。类的数据成员 (但不是结构)还具有尾随下划线
std::string table_name;  // OK - snake_case.
class TableInfo {
  ...
 private:
  std::string table_name_;  // OK - underscore at end.
  static Pool<TableInfo>* pool_;  // OK.
};
struct UrlTableProperties {
  std::string name;
  int num_entries;
  static Pool<UrlTableProperties>* pool;
};
4.声明的变量 或 ,其值为 固定 程序的持续时间,以前导“k”命名,后跟 通过混合大小写
const int kDaysInAWeek = 7;
const int kAndroid8_0_0 = 24;  // Android 8.0.0
5.通常,函数应以大写字母开头,并具有 每个新单词的大写字母
AddTableEntry()
DeleteUrl()
OpenFileOrDie()
6.枚举量
enum class UrlTableError {
  kOk = 0,
  kOutOfMemory,
  kMalformedInput,
};
7.宏定义,那么它们应该是 以所有大写字母和下划线以及特定于项目的前缀命名。
#define MYPROJECT_ROUND(x) ...

  • 对临时代码使用注释, 一个短期的解决方案,或者足够好但不完美。TODO
// TODO: bug 12345678 - Remove this after the 2047q4 compatibility window expires.
  • 判断语句,针对不同类型变量的写法
// int类型,int a
if (a == 0)
// double类型,double a
if(fabs(a)< 1e-15)
//指针类型,int *p
if(p == nullptr)
//bool类型,bool a
if(a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值