非正式命名规则

最后更新于: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 //********************************************************************** ``` ## 在项目的"标准缩写" 文档中说明所有的缩写 可以用文字处理文档,电子表格文档,在很大项目里,可以使用数据库
';