非正式命名规则
最后更新于:2022-04-02 04:15:39
#### [TOC]
## 与语言无关的命名规则的指导原则
### 区分变量名与子程序名
变量名以小写字母开始,如:`variableName`
子程序以大写字母开始,如:`RoutineName()`
### 区分类和对象
方案1:通过大写字母开头区分类型和变量
```
Widget widget;
LongerWidget longerWidget;
```
方案2:通过全部大写区分类型和变量
```
WIDGET widget
LONGERWIDGET longerwidget
```
方案3:通过给类型加“t”前缀区分类型和变量
```
t_Widget Widget:
t_LongerWidget LongerWidget:
```
方案4:通过给变量加“a”前缀区分类型和变量
```
Widget aWidget:
Longerwidget aLongerWidget:
```
方案5:通过对变量采用更明确的名字区分类型和变量
```
Widget employeeWidget:
Longerwidget fullEmployeeWidget
```
方案1缺陷
1.仅依靠大小写视觉差异太小
2.如果多语言混合编程中,有一种语言大小写不明感,则无法使用方案1(如:Visual Basic)
方案2缺陷
1.由于历史原因,在C++和java 总全部字母全大写表示常量
2.编程语言大小写不敏感,也会产生与方案1同样的问题
方案3缺陷
1.适用所有语言,但是不够美观
方案4缺陷
1.需要改变每个示例的名字,而不是仅仅修改类名
方案5缺陷
1.需要用费脑子想每个示例的鲜明的名字,并且有时候,类似 Widget,只是一个widget
> 本书选用**第五种**,对于不未熟悉规则的人,第五种可以直观的理解
### 标识全局变量
在所有全局变量前加g 如:`g_RunningTotal`
### 标识成员变量
添加 `m_`前缀来表明该变量既不是全局变量也不是局部变量
### 标识类型声明
添加 `t_` 前缀,如`typedef int t_Num;`
### 标识具名常量
方式一: 添加 `c_`前缀 如:`const int c_MaxAge=100;`
方式二:全大写,单词间用下划线标识`const int MAX_AGE=100;`
### 标识枚举类型
方式一:添加`e_`前缀或`E_`前缀
方式二:用全大写标识
### 格式化命名以提高可读性
推荐采用 小写字母开头的小驼峰写法
## 不同语言的规则
### c的命名规则
1. c和ch是字符变量。
2. i和j是整数下标。
3. n表示某物的数量。
4. p是指针
5. s是字符串
6. 预处理宏全部大写( ALL CAPS)。这通常也包括 typedef
7. 变量名和子程序名全部小写(all_lowercase)
8. 下画线(_)用做分隔符:1 etters in_1 lowercase!要比 lettersinlowercase更
具可读性
这些都是属于一般性的、UNⅨX风格或者 Linux风格的C编程规则,
### C++的命名规则
1. i和j是整数下标。
2. p是指针。
3. 常量、 typedef和预处理宏全部大写(ALL_CAPS)
4. 类和其他类型的名字混合大小写( MixedUpperAndLowerCase())。
5. 变量名和函数名中的第一个单词小写,后续每个单词的首字母大写--例
如, `variableorRoutineName`。
6. 不把下画线用做名字中的分隔符,除非用于全部大写的名字以及特定的前缀
中(如用于标识全局变量的前缀)。
## 缩短变量名的一般指导规则
1. 使用标准的缩写(列在字典中的那些常见缩写)
2. 去掉所有非前置元音。( commputer变成 cmpt, screen变成scrn, appl变成appl, integer变成 inter。)
3. 去掉虚词and,or,the等。
4. 使用每个单词的第一个或前几个字母
5. 统一地在每个单词的第一、第二或者第三个(选择最合适的一个)字母后截
6. 保留每个单词的第一个和最后一个字母。
7. 使用名字中的每一个重要单词,最多不超过三个。
8. 去除无用的后缀—ing,ed等。
9. 保留每个音节中最引人注意的发音。
10. 确保不要改变变量的含义
11. 反复使用上述技术,直到你把每个变量名的长度缩减到了8到20个字符,或者达到你所用的编程语言对变量名的限制字符数
## 在代码注释中使用缩写对照表
此方法虽然已经过时,但在严格要求字符限制少于n时,很有效
```
//**********************************************************************
// Translation Table
//
// Variable Meaning
// ------- -------
// XPOS X-Coordinate Position (in meters)
// YPOS Y-Coordinate Position (in meters)
// NDSCMP Needs Computing (=0 if no computation a needed
// =1 if computation is needed)
// PTGTTL Point Grand Total
// PTVLMX Point Value Maximun
// PSCRMX Possible Socre Maximum
//**********************************************************************
```
## 在项目的"标准缩写" 文档中说明所有的缩写
可以用文字处理文档,电子表格文档,在很大项目里,可以使用数据库
';