2009-02-13读书记录:《代码大全》(第一版)第九章——数据名称
来源:互联网 发布:云计算架构师要学什么 编辑:程序博客网 时间:2024/05/17 01:53
主要讲命名,变量命名、常量命名、类命名、空间命名等等。每个写程序的人都已经很熟悉的对变量命名了,几乎是巧可生精的程序了。熟不知命名也是有一定说法的。名称的长短、最佳字符数、接口命名规范、命名空间名称的约定等等,命好了名字不但表达明确了而且看着也舒服啊!
最佳命名长度:太短的名字表达不出完整的意思,太长的名字又难以输入。本章中并没有说多长才算合适,这确实是一个难以制定的界限,比如计数器用一个i就可以了,没必要写着TheTimeCounter,文中只是对比给出了过长、过短和恰好的三种变量名,让读者自己参考总结。
- 较长的名字适于较长使用的全局变量;而较短的名字则适用于局部变量
- 命名的一致性可以改善可读性并简化了维护
- 非一系列的变量命名中,尽量减少使用相同的单词
特殊数据命名
- 循环控制变量命名常用i,j,k
- 状态变量命名最好不要用flag;最好给标志赋值,并用枚举、常量对其进行测试
- 临时变量用来保存中间运算结果,可以使用TEMP或者X,若使用比较多还是起一个有意义的名字较好
- 逻辑变量命名几条准则:
- (1)典型逻辑变量名:Done(工作完成)、Error(发生错误)、Found(取了某个值)、Success(操作成功)
- (2)非真即假:不会出现第三种状态,如Done、Success,而Status则是不恰当的
- (3)加前缀Is,如IsDone,则用Ture或False回来此问
- (4)肯定的逻辑变量命名方便非运算
- 枚举类型命名,采用相同的前缀或后缀表示为同一组
- 用它所代表的抽象实体而非数值,常量命名多为全单词的大写
命名约定
记得我公司的一位前辈为我们新手写过一篇文章,主旨是说“程序是写给人看的”,提到了各种命名、编码规范、注释等等一些基础的编码方面需要注意的细节。也同样约定了一种规则要求我们大家都遵守,当时没发现有什么可取之处,到后来软件进行升级需要国际化的时候,大家各自的命名给其他人造成了很大的阻碍,纷纷后悔没按照这个规则进行编码,额外付出了大量的时间和精力。
非正式命名约定
- 标识全局变量:全局变量前面加一个“g_”做为标识
- 标识模块变量:即不是全局变量也不是局部变量,可以在变量前面加“m_”
- 标识类型命名:以“_T”表示类型名称,如:COLOR_T
- 标识命名常量:以“_C”做为后缀名
- 标识枚举类型:以“_e”或“_E”作为后缀
以分隔符或大家字母将单词分开可以增强可读性。尽量不要混合使用这两种方式,坚持使用其中一种即可。
各语言都有自己有关命名的约定,要遵守所使用语言的约定。书中例子我熟悉C语言,所以记录一下有关C的约定:
- c和ch是字符变量
- i和j是整形下标
- n是数量
- p是指针
- s是字符串
- 预处理程序宏指令是以全部大写来表示的,这通常扩展到包含tepedef
- 变量和子程序名称都是小写的
- 下划线“_”用做分隔符
以上这些对于习惯了.NET开发的我来说,还是有几点不适用的,变量和子程序名称小写就不太符合,继续下看“匈牙利命名”。
匈牙利命名
这个被使用的最广泛,发明人是Charles Simionyi一个匈牙利人,没以自己的名字命名,而是以国籍命名,赞一个!
匈牙利命名主要包括三部分:基本类型、一个或更多个前缀、一个限定词。
读过了才知道,原来匈牙利命名的还挺多,不过还好大部分都遵守了,用的多了、熟了自然而然就和标准一样了。
短名称
现在的语言对名称的长度没有限制,所以这一节只是了解一下而已。
- 2009-02-13读书记录:《代码大全》(第一版)第九章——数据名称
- 2009-02-12读书记录:《代码大全》(第一版)第八章——生成数据
- 2009-02-13读书记录:《代码大全》(第一版)第十章——变量
- 2009-03-02读书记录:《代码大全》(第一版)第二十九章——代码调试技术
- 2009-02-09读书记录——《代码大全》(第一版)第六章——模块化设计
- 2009-02-12读书记录——《代码大全》(第一版)第七章——高级结构设计
- 2009-02-15读书记录:《代码大全》(第一版)第十一章——基本数据类型
- 2009-02-16读书记录:《代码大全》(第一版)第十二章——复杂数据类型*
- 2009-02-16读书记录:《代码大全》(第一版)第十三章——顺序程序语句
- 2009-02-17读书记录:《代码大全》(第一版)第十四章——条件语句
- 2009-02-17读书记录:《代码大全》(第一版)第十五章——循环语句
- 2009-02-17读书记录:《代码大全》(第一版)第十六章——少见的控制结构
- 2009-02-18读书记录:《代码大全》(第一版)第十七章——常见的控制结构
- 2009-02-19读书记录:《代码大全》(第一版)第十八章——布局和风格
- 2009-02-20读书记录:《代码大全》(第一版)第十九章——文档
- 2009-02-21读书记录:《代码大全》(第一版)第二十章——编程工具
- 2009-02-22读书记录:《代码大全》(第一版)第二十二章——创建管理
- 2009-02-22读书记录:《代码大全》(第一版)第二十三章——软件质量概述
- Lua metatable实例
- DispatchAction, LookupDispatchAction, MappingDispatchAction深入分析
- Struts2入门学习心得
- 解决HTTP数据不更新问题——no-cache在HTTP通信协议中的应用
- java中Vector,ArrayList,List使用剖析
- 2009-02-13读书记录:《代码大全》(第一版)第九章——数据名称
- netfilter 和 Linux 防火墙
- 解决netbeans 安装乱码问题
- 一种OPENSSL_Uplink(100F2010,05): no OPENSSL_Applink解决方法
- 写在情人节前夕:被“次贷危机”撞了腰,也撞飞了缠绵女友!
- VIM替换路径
- Bluez下的rfcomm层通信测试程序
- 网卡、光纤网卡、ISCSI卡有什么区别?
- NetBeans Web应用热部署