C++编码规范[实验室用]

 命名规则

名称

命名规则

例子

类名

大写C开头,其后每个单词首字母大写,单词之间不加任何分隔符

CRenderComponent

结构名

大写S开头,其余规则同类名

SRectangle

枚举名

大写E开头,其余规则同类名

ENodeType

类的公有函数

public

第一个单词首字母小写,且必须为动词,其后每个单词首字母大写,单词之间不加任何分隔符

initNetwork()

类的保护函数protect

以单下划线开头,其余规则同公有函数

_initNetwork()

类的私有函数private

以双下划线开头,其余规则同共有函数

__initNetwork()

类的虚函数virtul

在函数名末尾添加大写字母V

_initNetworkV()

普通变量

每个单词首字母大写,且单词之间不加任何分隔符,整体变量名必须为名词

LocalIP

指针变量

以小写字母p开头,其余规则同普通变量

pData

类的成员变量

以m_开头,其余规则同普通变量

m_LocalIP

类的指针成员变量

以m_开头,其余规则同普通指针变量

m_pData

函数输入参数

以小写字母v开头,不区分输入参数是否为指针,其余规则同普通变量

vLocalIP,vData

函数输出参数

以小写字母vo开头,其余规则同函数输入参数

voLocalIP

2. 多余的空格

osg::Vec3f CLightningBoltInstance::lerpOsg(osg::Vec3f & vVec1,osg::Vec3f & vVec2,float vAmount)  //引用符号和变量名称之间不要加空格
int lastLineIndex ;   //分号前不要加空格
osg::Vec3f CLightningBoltInstance::getLeft( osg::Vec3f &vForward)  //”(“后不要加空格

3. 缺少的空格

osg::Quat rotateQuat(-osg::PI_2,osg::Vec3f(0.0,1.0,0.0));  //函数的参数之间要加空格
if(m_Topology[level] == Jitter)    //if等关键字后面要加空格

4. cpp文件中每个函数前加如下两行(类的构造函数和析构函数不加)

//******************************************************************
//FUNCTION:


5. 函数之间用且仅用一行空行分开;

6. 函数体内执行不同子功能的代码用且仅用一行空行分开;

7. 文件中任何地方不能出现连续两个或两个以上的空行;

8. 文件中不能有被注释掉的代码;

9. 避免为变量名增加注释去说明该变量的功能,变量名本身就该明确体现其功能;

10. 避免使用全局变量,绝对不能在全局命名空间中使用全局变量;

11. 尽量避免写注释,如果要写,尽量用英文,并注意拼写错误;

12. 避免变量和函数命名中的拼写错误;

13. 禁止在变量和函数命名中使用拼音;

14. 双重循环使用循环变量i和k,而不是i和j

15. 一个函数只完成一个功能,函数函数控制在50行;

16. 一个类的源代码行数控制在400行;

17. 变量的定义尽量靠近其第一次使用;

18. 对于重复出现的相同计算,应该用一个变量来保存计算结果,而不是多次重复计算

DWORD *index = new DWORD[(row - 1)*(col - 1)*2*3];   
for(int i = 0; i != (row - 1)*(col - 1)*2*3; ++i) {    // (row - 1)*(col - 1)*2*3重复出现
pVecindex->push_back(index[i]);
pTexArray->push_back((*pTexArrayTemp)[index[i]]);
}

19. 避免在程序中直接出现数字

DWORD *index = new DWORD[(row - 1)*(col - 1)*2*3];   //为什么要乘以2再乘以3?


20. 避免include无用的头文件,特别是在头文件中。请逐个删除头文件和cpp文件中的include语句,以测试哪些是无用的include;

21. 重载的虚函数必须使用关键字override进行修饰;

22. get*()成员函数的返回类型不能为void;

23. get*()成员函数的参数中不能包含输出参数;

24. get*()成员函数必须加const修饰,限制其不能修改所有成员变量;

25. get*()成员函数的返回值如果有必要,必须加const修饰以防止被修改;

26. 如果需要获取某个成员变量并对其进行修改,使用fetch*()而不是get*();

27. 如果需要通过输出参数的方式来获取某个成员变量,使用dump*()而不是get*();

28. 避免串联式的指针调用(如pClass1->getClass2()->getClass3()->doSomething());

29. 尽量使用了_ASSERT();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值