C++编码规范建议

C++编码规范建议,第1张

C++编码规范建议

一、命名规范建议:

1、  变量命名时用对应的英文单词,不要用拼音。

2、  变量命名建议用小驼峰式命名法(就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。)

3、  类名、方法名、命名空间建议用大驼峰式命名法(相比小驼峰法,大驼峰法把第一个单词的首字母也大写了,例如:MyFirstName、MyLastName)。

4、  变量命名时尽量不要使用难以理解的数字,除非有必要且加上注释。

5、  指针变量命名前加p。

6、  全局变量命名前加g_,如g_SumCount。

7、  静态变量命名前加s_,如s_Count。

8、  枚举变量和枚举成员变量命名前加En。

9、  类成员变量命名前加m_,如m_data。

     10、宏命名使用大写字母加下划线‘_’分隔词义。

     11、常量命名以小写“c_”开头。

     12、VS中解决方案命名、项目命名时前缀应加上公司缩写或产品缩写。

二、代码排版建议

1、一行代码只做一件事情,如只定义一个变量,或只写一条语句,这样的代码容易阅读,并且方便于写注释。

2、尽可能在定义变量的同时初始化该变量(就近原则),如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误,本建议可以减少隐患。

3、if、for、while、do 等语句自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加{},这样可以防止书写失误。

如这种写法是不建议的:if (!pfs)return;

建议改成:

if (!pfs)

return;

三、注释规范建议:

1、源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等信息。实际中至少要列出作者,这样阅读代码有问题时可以找原作者咨询。

2、函数声明前最好加上注释,内容包括“功能”,“参数”,“返回值”,“设计思想”,“调用函数”,“日期”,“修改记录”等信息。

3、全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

四、编程规范建议:

1、判断指针是否为空用nullptr。

2、用指针调用成员变量或方法前,判断该指针是否为空,防止崩溃。

3、函数参数个数控制在5个以内,多的话考虑封装成结构体。

4、类对象作为函数参数时,考虑加上引用&,避免对象构造和析构,提高效率。能用const &尽量用const &。

5、函数参数是指针时且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。

6、类的构造函数优先用初始化列表形式,原因在于某些时候可以提高效率。详细原因自行百度。

7、类中函数不修改任何成员变量时要声明为const函数。

8、如果类构造函数只有一个简单类型参数,需要加explicit 修饰符,防止非预期的隐式类型转换。

9、针对vector容器优先用emplace_back()替代push_back(),因为使用emplace_back() 函数可以减少一次拷贝或移动构造的过程,提升容器插入数据的效率。更详细的原因自行百度。

10、使用STL判断容器是否为空时,如果提供了empty()方法,使用empty(),不要获取容器大小然后判断是否为0。

11、对于多态中的基类的析构函数要声明为虚析构函数。

12、如果使用#define定义常量时,优先替换成用const来定义常量,后者会进行类型检查。

13、确保一个函数只干一件事,函数越短小精悍越好。

14、if中的条件逻辑比较复杂时要简化。

15、使用C++中的STL时,算法调用优先于手写的算法。比如用for_each算法替换手写的for循环等。原因如下:

效率:算法通常比自己写的循环效率更高。

正确性:手学循环比使用算法更容器出错。

可维护性:使用算法的代码通常比手写循环的更加简洁明了。

16、使用C++中的STL时,调用容器的成员函数优先于调用同名的算法。因为成员函数更快且与容器结合更精密。比如关联容器提供了count、find算法,list容器提供了remove、remove_if等。

17、double类型数据进行大小比较时加上容差。

18、考虑用组合代替继承。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5611514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存