c++编码风格

    xiaoxiao2022-07-03  115

    1:类的命名规则

    1:类名前缀C,成员前缀m_,静态成员前缀 sm_ 纯虚类 前缀I /* Describe:简单的描述 */ #ifndef __XXXX__ #define __XXXX__ class CDog { int m_nMyLife; }; #endif  2:全局变量 g_ int g_i5MyLife; 3:全局静态变量 sg_ static int sg_i4MyLife; 4:局部静态 s_ static int s_i4MyLife; 5:数组 arr char arrcName[12]=""; int arrnName[12]=""; arr数组前缀+类型 6:string strName; 7:局部变量 int i4Num; float fNum; double dNum; 8:指针 char *pMyLife; *要靠着p(意思是p是指针,指向int) 9:如果用"_"分隔就不要用大小写区分, 如 My_Life; 10:宏 #define MY_LIFE 全部大写 "_"隔开 11:枚举 emMyLife eMyLife; 内容 eMY_LIFE_POS1= 1, 12:结构体 stMyLife tMyLife; 13:常量 const int nMAX_LIFE; 类型+全大写,"_"分隔,与宏的区别是加了 类型 14:名字命名 应该 形容词+名词 15:一些通用的命名 a:互斥 int Getxxx(); void Setxxx(); bool Addxxx(); bool Subxxx(); b:触发事件,void Onxxxx(); 比如收到客户端 操作请求,定时器,检查事件,满足检查条件 c:检查事件 void Checkxxx(); d:是否 bool Isxxx(); e:管理类 CxxxManager{}; f:虚函数 加个前缀v bool vIsTimeOut(); g:通知 void Sendxxx(); 发送信息,单个玩家 void Broadcastxxx(); 广播指定范围内全部玩家 e:从集合里找 xxxx Findxxx(); 一般从集合里返回一个自定义类的时候,使用它

    2:内联函数

    inline int max(int a, int b) { return a > b ? a : b; } 内联函数 不应该使用for,while之类的循环,也不应该超过10行代码,更不应该使用递归

    3:前置声明

    class A; //<============这就是前置声明 clas B{ public: A *P; } ============================================================= #include "a.h" //<====这里只能包含A的头文件 否则 A a;报错 class A class B{ public: A a; } 问题:为什么我们前置声明时,只能使用类型的指针和引用呢? 答:那是因为指针是固定大小,并且可以表示任意的类型, 而A a是需要了解A的大小的,不然是不可能知道给类B分配内存大小的,因此不完整的前置声明就不行,必须要包含a.h来获得类A的大小,A类改变同时也要重新编译类B。A *p;就不用重新编译B文件。 结论: 头文件包含其实是一件很烦琐的工作,因此能使用前置声明我们就用前置声明 在前置声明时,我们只能使用的就是类的指针和引用(因为引用也是居于指针的实现的)。 前置声明最大的好处就是『节省编译时间』

    4:static

    1:不要在头文件中声明static全局函数/全局变量,如果作用域仅在该文件也不要在.cpp中声明 非static全局函数/全局变量 .h static int g_nNum; // 错误的 .cpp int g_num; // 仅在该文件的 那么 应该 static int g_num; 2:全局static的作用域 仅在该文件头到尾 3:如果要声明需要被其他.cpp使用的如下 .h int g_nNum ; int getNum(); .cpp int g_nNum =0; int getNum(){ return 1; }

     

    最新回复(0)