谷歌命名规范总结 您所在的位置:网站首页 谷歌规范 谷歌命名规范总结

谷歌命名规范总结

2023-06-09 02:36| 来源: 网络整理| 查看: 265

    总有一种感觉,自己写的代码和别人写的代码总是不同,感觉自己写的代码非常的丑陋,别人的非常的优美。有些自己写的代码几个月后自己都看不懂的情况出现 =  = 。所以写代码不能任凭发挥龙飞凤舞,他们也要有自己的规范,才能统一,优美。下面是网上找到的谷歌代码的一些总结,仅供参考。

  

作用域的规范

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. 函数体尽量短小、紧凑,功能单一。

 

其他c++特性规范

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很不错,有时候,注释确实是为了标记一些未完成的或完成的不尽如人意的地方 ,

这样一搜索,就知道还有哪些活要干,日志都省了。

注:这个详解很有意思,可以去看一下

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有