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一个匈牙利人,没以自己的名字命名,而是以国籍命名,赞一个!

匈牙利命名主要包括三部分:基本类型、一个或更多个前缀、一个限定词。

读过了才知道,原来匈牙利命名的还挺多,不过还好大部分都遵守了,用的多了、熟了自然而然就和标准一样了。

短名称

现在的语言对名称的长度没有限制,所以这一节只是了解一下而已。

 

原创粉丝点击