程序源代码命名法

来源:互联网 发布:新闻ps软件 编辑:程序博客网 时间:2024/06/18 02:46

 程序开发时候,团队合作与代码继承和维护是很重要的环节。关于源代码的编写与管理有着复杂的机制,源代码命名法就是这些复杂机制中的一种。举个简单的例子,有个公司想搞一个项目,手下可以分配的有两个程序员,简称甲、乙程序员,甲程序员尤为厉害,是团队的顶梁柱,但有个很怪的毛病,他喜欢直接用一个或几个没有直接意义的字母作为程序中的变量名。26个字母当然不够用啊,大小写加上多个字母的排列组合显然可以抵挡一阵子。这时乙程序员就很郁闷,每次顶梁柱写了一部分代码之后,他看着那些无意义的字母排列的排列组合真的是不知所云,无法与甲进行合作。矛盾就产生了。

        怎么办呢?当时有个叫查尔斯·西蒙尼的程序员想到了一个办法,1972~1981年间,他根据自己的祖籍匈牙利人名的命名方法(姓氏在名字的前面,跟中国人一样),制定出了一套命名方法,现在普遍叫做匈牙利命名法。后来他做了微软的总设计师,影响了微软MFC程序的编码风格。

        匈牙利命名法可以很好的解决变量命名的困难。这种命名法给变量名加个前缀,代表其数据类型,例如是整型(integer)变量,变量名前面加个“i”,是双字型(double words)的变量,前面加个“dw”,等等;变量前缀后面所加的单词通常代表变量的意义,例如整型长度变量通常用iWidth来表示,价钱的指针(Pointer)通常用pPrice来表示。假如前面那个甲程序员采用匈牙利命名法作为其变量命名规则,乙程序员就很开心,为啥?他从变量名就可以知道该变量是那种数据类型,从变量名乙也可以很容易理解甲所使用的变量的意义。

        事情总不是一帆风顺的,这时前面那个公司项目组老板觉得两个程序员人手不够,于是又招了个比甲更为厉害的程序员丙。丙的处事风格极为严谨,以效率著称。他阅读所编写的代码后发现使用了太多的匈牙利命名法,导致代码累赘,不利于代码移植,变量名加上类型前缀是没有必要的。这时“驼峰式大小写法”就可以很好的解决这个问题。

        1991年,O'Reilly公司出版了《ProgrammingPerl》这本经典图书,其中的Perl语言普遍使用大小写混合格式来表示变量名。O'Reilly公司出版的计算机类书籍一般有个特点,就是喜欢拿个动物的图片来做封面,为什么要提这个呢,因为《Programming Perl》用的是头骆驼,于是驼峰式大小写法孕育而生。

        驼峰式大小写法的变量名是由二个或多个单字连结在一起,单词之间一般以连接符或下划线隔开,根据单词的大小写编码习惯可以把驼峰式大小写法分为小驼峰式命名法和大驼峰式命名法,其中小驼峰式命名法变量名第一个单字以小写字母开始,第二个单字的首字母大写,例如:first_Name、lastName;大驼峰式命名法变量名每一个单字的首字母都采用大写字母,例如:FirstName、Last-Name。大驼峰式命名法也叫Pascal(帕斯卡)命名法,因为Pascal程序员喜欢这样写。这时那个丙程序员看到了驼峰式大小写法,觉得不错,很和他的口味。

        自然辩证法教导我们,事情总不是一成不变的。假如开始提到的那个公司由于项目完成很出色,结果被Google瞄中,Google收购此公司为其一个团队做开发。这时上文提到的甲乙丙程序员着手编写程序的时候就遇到了麻烦,因为Google有着自己的一套代码编写标准。为了全公司代码风格统一,每个Google程序员必须严格按照Google的标准来完成任务。Google代码规范不同于匈牙利命名法和驼峰式大小写法,Google不仅对源码文件名、源码文件扩展名、名空间、函数名、变量名等等有着严格的标准,而且对编译警告的级别,代码注释都有着严格的要求。

        在源码命名的背后有着很多的故事,每个故事的背后其实代表着一种文化的方向。匈牙利命名法利用人名的组合特性对源码变量名进行命名,驼峰式大小写法摒弃变量类型前缀的累赘,利用单词的多个组合来代表变量,而Google编程风格更是一种企业文化,是一种实践中而得到的编码风格。

        既然编码风格有很多,合理的利用源代码命名法又会使代码易于别人理解,便于自己管理,减少代码错误,提高编码效率,采用何种代码命名法其实我认为取决于实际要求,小型程序开发可以采用驼峰式大小写法,稍微复杂或者大型程序开发可以采用匈牙利命名法或者Google编码方法,如果是Google的员工的话就别无选择,最好只使用Google编码方法。

        源代码命名的学问博大精深,每种方法都是一些实践所迫切要求的,源代码命名背后文化又体现了对应命名法的特性。总之,他们是相互影响、相互联系着的。

 

参考资料

1.      匈牙利命名法——维基百科

http://zh.wikipedia.org/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95

2.      驼峰式大小写——维基百科

http://zh.wikipedia.org/wiki/%E9%A7%9D%E5%B3%B0%E5%BC%8F%E5%A4%A7%E5%B0%8F%E5%AF%AB

3.      帕斯卡命名法——维基百科

http://zh.wikipedia.org/wiki/%E5%B8%95%E6%96%AF%E5%8D%A1%E5%91%BD%E5%90%8D%E6%B3%95

4.      Google C++ Style Guide

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

0 0