github:https://github.com/zh-google-styleguide/zh-google-styleguide
中文版:https://zh-google-styleguide.readthedocs.io/en/latest/
1、Google 开源项目风格指南
保持一致的编程风格很重要。Google C++ Style Guide 是一份不错的 C++ 编码指南,可以在短时间内快速掌握规范。不过规范毕竟是人定的,记得活学活用。
中文版
- ReadTheDocs 托管地址: 在线阅读最新版本
- GitHub 托管地址: zh-google-styleguide
- 离线文档下载地址: release
- Google C++ 风格指南
- Google Objective-C 风格指南
- Google Python 风格指南
- Google JavaScript 风格指南
- Google Shell 风格指南
- Google JSON 风格指南
- Google TypeScript 风格指南
英文版
Google 官方英文版:https://github.com/google/styleguide
- AngularJS Style Guide
- Common Lisp Style Guide
- C++ Style Guide
- C# Style Guide
- Go Style Guide
- HTML/CSS Style Guide
- JavaScript Style Guide
- Java Style Guide
- Objective-C Style Guide
- Python Style Guide
- R Style Guide
- Shell Style Guide
- Swift Style Guide
- TypeScript Style Guide
- Vim script Style Guide
2、C++ 风格指南
目录
注:原图较大,在新标签页中打开或保存到本地打开更清晰
3、命名 规范
目前业界共有四种命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法 和 下划线命名法,其中前三种是较为流行的命名法。
匈牙利命名
开头字母用变量类型的缩写,
其余部分用变量的英文或英文的缩写,
且每个单词的第一个字母都大写。
示例:
int iMyAge; // i 是 int 类型的缩写。
char cMyName[10]; // c 是 char 类型的缩写。
float fManHeight; // f 是 float 类型的缩写。
匈牙利命名广泛应用于象 Microsoft Windows 这样的环境中, Windows 编程中用到的变量(还包括宏)的命名规则都是匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯- 西蒙尼(Charles Simonyi) 提出的
匈牙利命名法 通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等这些符号可以多个同时使用,顺序是先 m_(成员变量), 再指针,再简单数据类型,再其它 。
例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途
匈牙利命名法中常用的小写字母的前缀:属性 + 类型 + 描述。属性一般是 小写字母 + _ :
g_ : 全局变量
m_ : 类成员变量
s_ : 静态变量
c_ : 常量
类 型 前 缀 | 类 型 |
a | 数组 (Array) |
b | 布尔值 (Boolean) |
by | 字节 (Byte) |
c | 有符号字符 (Char),用 c 开头 cCount |
cb | 无符号字符 (Char Byte,没有多少人用) |
cr | 颜色参考值 (ColorRef) |
d | double 用d开头 dDeta |
f | float 用f开头 fAvg |
cx,cy | 坐标差(长度 ShortInt) |
w | Word,unsigned int(WORD) 用w开头 wCount |
dw | Double Word,unsigned long int(DWORD) 用dw开头 dwBroad |
fn | 函数 |
h | Handle(句柄) |
i | 整型 int ,用 i 开头 iCount |
n | short int 短整型 用 n 开头 nStepCount |
l | Long Int 长整型 用 l 开头 lSum |
lp | Long Pointer |
m_ | 类的成员 |
np | Near Pointer |
p | Pointer |
s | 字符串类型,用s开头 sFileName |
sz | 以null做结尾的字符串型 (String with Zero End), 用\0结尾的字符串 用sz开头 szFileName |
驼峰 命名法
小驼峰 命名
小驼峰法(camel方法):
- 第1个单词 以小写字母开始;
- 第2个单词首字母大写,或从第二个单词开始,后面的每一个单词的首字母都用大写
- 即 小驼峰式命名法: 第一个单词首字母小写,后面其他单词首字母大写。
变量 一般用 小驼峰法标识。
示例:
int myAge;
char myName[10];
float manHeight;
大驼峰式 命名
大驼峰式命名 又叫 帕斯卡命名法。所有单词的首字母都大写:FirstName, CamelCase
pascal 命名,常用于 类名,函数名,属性,命名空间。
大驼峰法(Upper Camel Case) 示例:
int MyAge;
char MyName[10];
float ManHeight ;
public class DataBaseUser
下面是分别用 骆驼式命名法 和 下划线法命名 的同一个函数:
printEmployeePaychecks(); 骆驼式命名法 ---- 函数名中的每一个逻辑断点都有一个大写字母来标记
print_employee_paychecks();下划线法 ---- 函数名中的每一个逻辑断点都有一个下划线来标记。
下划线 命名
下划线法是随着 C语言 的出现流行起来的,在 UNIX/LIUNX 这样的环境,以及 GNU 代码中使用非常普遍
命名规则 小结
通常每种语言都有自己的 Coding Style,比如 C/C++ 和 python 是下划线,java 和 go 是驼峰。
所以对于要使用哪种命名法可以根据个人的代码编写风格,也是可使用不同的命名规范混合使用。如:骆驼 + 下划线 (int temperature_Sensor;)
MyData 就是一个帕斯卡命名的示例 。
而 myData 是一个骆驼命名法,它第一个单词的第一个字母小写,后面的单词首字母大写,看起来像一个骆驼 。
而 iMyData 是一个匈牙利命名法,它的小写的i说明了它的型态,后面的和帕斯卡命名相同,指示了该变量的用途。