跟我学C++中级篇——C++命名规范

一、C++命名规范

在实际的编码过程中,遇到的一个重要问题就是命名的问题。变量、模块、函数、类等等都需要命名。试想一下,团队中有多个成员,你用驼峰,我用小写下划线,那个啥都不用,还有用拼音输入的…word 天啊。而且大家的编程水平和编程年限以及使用的编程语言经历都有所不同,导致可能对某些风格的不接受或者强烈喜欢某个风格,这都有可能。
所以命名规范就是在团队中,制定一套容易为大家接受,又不至于让大家觉得苛刻到不好实现的地步。目的只有一个,让团队间沟通成本尽量降低,使得代码的后期维护尽量容易。

二、如何命名

命名其实就是一个整齐划一的标准化过程,它一般分成两个部分:
1、形式规则
形式规则非学好理解,比如类成员函数使用何种前缘或后缀,全局变量和静态变量使用何种前缀后缀。比如常见的m_前缀或_后缀。也可以使用不带各种缀的,比如小写加下划线命名方式。也可用用首字母大写的驼峰方式,包括人们现在已经诟病的匈牙利命名法。这种命名方式有很多种,找一个最合适的即可。
2、表现规则。
表现规则就比较限制多了。
首先,要尽量使用有意义的英文单词或缩写来表达命名的可理解性,也就是常说的代码即注释。要在能表现意义的前提下尽量短。当然做到这一点,有点难为大多数开发者了。但至少要摒除拼音命名和数字命名的这两种陋习。例如下面的命名方式:

int a1,a2,a3;
std::string str1,str2,str3;
double yuanzhoulv;

其次,避免使用容易混淆的命名,比如使用英文缩写与常见的英文缩写一致,看下面的例子:

std::string IBM = "";

很多人看到第一眼会想到蓝色巨人IBM,而可能开发者的定义与其毫无关系。同样在开发中可能会遇到很多类似的细节,再比如定义变量name,一般情况下不推荐,因为很多平台上这个名称可能已经被预定义了(特别是数据库中)。
另外还有一个比较重要的,就是l和o,知道为什么汽车牌照中没有它们么,就大概明白什么意思了。遇到这种情况尽量能用其它方式替代就替代吧,如果非要用,还是要有变通的方法并且增加注释。然后还有一个注意点,不要写大量的类似的名称,特别是有重载或重写的情况下。懂得应该都懂。
再次,使用一些约定的方法来定义接口或函数等,如抽象类使用Abstract开头,基类使用Base开头,实现类加I或impl。当然这个争议很大,但在一些初中级选手比较多的团队里,还是建议增加这一条为好。
最后,要保持整体命名风格的致性,至少要保证大模块的命名风格一致性。

三、总结

命名规范的意义就在于标准化,不管这种标准化是否先进。标准化就意味着尽量消除了成员间的某种程度上的差别,这和工厂中标准件的行为是一致的。新手和后来者以及维护者都能迅速的进入状态,最大可能的消除因为代码名称的问题导致的时间浪费。
当软件工程发展到一两个人甚至一个小团队都无法搞定需求时,命名规范的意义也就真正的体现出来了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值