总有一种感觉,自己写的代码和别人写的代码总是不同,感觉自己写的代码非常的丑陋,别人的非常的优美。有些自己写的代码几个月后自己都看不懂的情况出现 = = 。所以写代码不能任凭发挥龙飞凤舞,他们也要有自己的规范,才能统一,优美。下面是网上找到的谷歌代码的一些总结,仅供参考。
1. .cc中的不具名命名空间可避免命名冲突、限定作用域,避免直接使用using提示符污
命名空间;
2. 嵌套类符合局部使用原则,只是不能在其他头文件中前置声明,尽量不要public;
3. 尽量不用全局函数和全局变量,考虑作用域和命名空间限制,尽量单独形成编译单元;
4. 多线程中的全局变量(含静态成员变量)不要使用class类型(含STL容器),避免
不明确行为导致的bug。
作用域的使用,除了考虑名称污染、可读性之外,主要是为降低耦合度,提高编译、执行
效率。
1. 不在构造函数中做太多逻辑相关的初始化;
2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器
不再提供,需要编码者自行提供默认构造函数;
3. 为避免隐式转换,需将单参数构造函数声明为explicit;
4. 为避免拷贝构造函数、赋值操作的滥用和编译器自动生成,可目前声明其为private
且无需实现;
5. 仅在作为数据集合时使用struct;
6. 组合>实现继承>接口继承>私有继承,子类重载的虚函数也要声明virtual关键字,
虽然编译器允许不这样做;
7. 避免使用多重继承,使用时,除一个基类含有实现外,其他基类均为纯接口;
8. 接口类类名以Interface为后缀,除提供带实现的虚析构函数、静态成员函数外,其
他均为纯虚函数,不定义非静态数据成员,不提供构造函数,提供的话,声明为protected;
9. 为降低复杂性,尽量不重载操作符,模板、标准类中使用时提供文档说明;
10. 存取函数一般内联在头文件中;
11. 声明次序:public->protected->private;
12. 函数体尽量短小、紧凑,功能单一。
1. 对于智能指针,安全第一、方便第二,尽可能局部化(scoped_ptr);
2. 引用形参加上const,否则使用指针形参;
3. 函数重载的使用要清晰、易读;
4. 鉴于容易误用,禁止使用缺省函数参数(值得商榷);
5. 禁止使用变长数组;
6. 合理使用友元;
7. 为了方便代码管理,禁止使用异常(值得商榷);
8. 禁止使用RTTI,否则重新设计代码吧;
9. 使用C++风格的类型转换,除单元测试外不要使用dynamic_cast;
10. 使用流还printf + read/write,it is a problem;
11. 能用前置自增/减不用后置自增/减;
12. const能用则用,提倡const在前;
13. 使用确定大小的整型,除位组外不要使用无符号型;
14. 格式化输出及结构对齐时,注意32位和64位的系统差异;
15. 除字符串化、连接外尽量避免使用宏;
16. 整数用0,实数用0.0,指针用NULL,字符(串)用'\0';
17. 用sizeof(varname)代替sizeof(type);
18. 只使用Boost中被认可的库。
1. 总体规则:不要随意缩写,如果说ChangeLocalValue写作ChgLocVal还有情可
原的话,把ModifyPlayerName写作MdfPlyNm就太过分了,除函数名可适当为动
词外,其他命名尽量使用清晰易懂的名词;
2. 宏、枚举等使用全部大写+下划线;
3. 变量(含类、结构体成员变量)、文件、命名空间、存取函数等使用全部小写+下划线 ,
类成员变量以下划线结尾,全局变量以g_开头;
4. 普通函数、类型(含类与结构体、枚举类型)、常量等使用大小写混合,不含下划线;
5. 参考现有或相近命名约定。
注:只要有好的命名规范,什么样子都随意,比如我比较常用的大小驼峰,全局g打头,指针p打头等等。
1. 关于注释风格,很多C++的coders更喜欢行注释,C coders或许对块注释依然情
有独钟,或者在文件头大段大段的注释时使用块注释;
2. 文件注释可以炫耀你的成就,也是为了捅了篓子别人可以找你;
3. 注释要言简意赅,不要拖沓冗余,复杂的东西简单化和简单的东西复杂化都是要被鄙视
的;
4. 对于Chinese coders来说,用英文注释还是用中文注释,it is a problem,但不
管怎样,注释是为了让别人看懂,难道是为了炫耀编程语言之外的你的母语或外语水平吗;
5. 注释不要太乱,适当的缩进才会让人乐意看,但也没有必要规定注释从第几列开始(我
自己写代码的时候总喜欢这样),UNIX/LINUX下还可以约定是使用tab还是space,
个人倾向于space;
6. TODO很不错,有时候,注释确实是为了标记一些未完成的或完成的不尽如人意的地方 ,
这样一搜索,就知道还有哪些活要干,日志都省了。
注:这个详解很有意思,可以去看一下