时间:2014.03.02

地点:基地

----------------------------------------------------------------------------------------

一、简述

Google 的C++规范号称世界上最优秀的编码规范,于是拿来研究下,已改善自己以后的工作,今天只先学习下它的命名规范。

----------------------------------------------------------------------------------------

二、命名规则

1.文件命名规则

文件名全部小写,可以含下划线或连字符,按项目约定命名,且尽量保证文件名明确。比如:

cmd_save_player_info_class.cc                  my_use_full_class.cc

定义类的文件名一般是成对出现,如:foo_bar.h   foo_bar.cc

若是类中含大量内联函数,我们还可使用-ini.h文件,使之文件内容更加清晰,于是又如:

url_table.h     url_table.cc  url-table-ini.h

2.类命名规则

类型命名每个单词首字母大写,不含下划线,以名词形式。比如: MyPalyerManager,这对于所有类型命名一样,类结构体,枚举,类定义都是如此,比如:MyExcitingEnum

3.变量命名规则

变量名一律小写,单词用下划线相连,例如:

int player_id;                      string table_name;

特殊的是类成员变量,后跟下划线区别普通变量,比如: player_name_         player_id_

全局变量则以  g_  开头,比如 :   g_system_time

当然结构体成员变量还是和普通变量一样,比如:string name;   int num_entries;

4.常量命名规则

k后面跟大写字母开头的单词,比如:

const int kDaysInAWeek=7;

const string kCompanyName="Tecent";

5.函数命名规则

常规函数每个单词首字母大写,使用命令式语气,比如:OpenFile()   CheckFileName(),

而存取函数或短小的内联函数使用小写加下划线,且与访问变量相吻合,比如 set_num_errors();

  1. class Player{
  2. public:
  3. void set_player_id(const int player_id){return player_id_=player_id;}
  4. int get_player_id() const{return player-id_;}
  5. private:
  6. int palyer_id_;
  7. };

6.名字空间命名

命名空间全小写,并基于项目名称和目录结构,比如

google_awesome_project

7.枚举命名规则

枚举类名属于类型名,按类命名,枚举值全大写加下划线,比如:ENUM_NAME

8.宏变量命名规则

如果你一定要用到宏,全大写加下划线,比如:

#define PI_ROUND 3.0

----------------------------------------------------------------------------------------

三、总结

总的来说,函数名、变量名、文件名都应该具有描述性,不要随意缩写,类型变量名保持名词性描述,函数名称保持命令性语气,宏、枚举值全大写加下划线,变量、文件、命名空间、存取函数全小写加下划线,其中类成员变量还要以下划线结尾,全局变量g_开头

原文转自 http://blog.csdn.net/u012333003/article/details/20282277

原作者为 云梦泽1989. 请尊重原作者版权

Google C++命名规范的更多相关文章

  1. Google Python命名规范

    Google Python命名规范 module_name,  模块 package_name,  包 ClassName,  类 method_name,  方法 ExceptionName,    ...

  2. Google Python 命名规范

    Google Python命名规范 module_name,  模块 package_name,  包 ClassName,  类 method_name,  方法 ExceptionName,    ...

  3. python—命名规范(转)

    文件名全小写,可使用下划线 包应该是简短的.小写的名字.如果下划线可以改善可读性可以加入.如mypackage. 模块与包的规范同.如mymodule. 类总是使用首字母大写单词串.如MyClass. ...

  4. python 中变量的命名规范

    出自:http://www.diybl.com/course/3_program/python/20111130/563643.html 模块名: 小写字母,单词之间用_分割 ad_stats.py ...

  5. Python变量命名规范

    模块名: 小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样 类名: 单词首字母大写 AdStats ConfigUtil 全局变量名(类变量,在java中相当于static变量 ...

  6. python—命名规范

    文件名全小写,可使用下划线 包应该是简短的.小写的名字.如果下划线可以改善可读性可以加入.如mypackage. 模块与包的规范同.如mymodule. 类总是使用首字母大写单词串.如MyClass. ...

  7. java~google样式检查和命名规范

    对于代码的样式和各种元素的命名都是我们架构师需要考虑的,目前在java世界里,比较流行使用java的规范,包括了代码样式检查. 代码样式检查插件 样式文件xml google命名规范 一 代码样式检查 ...

  8. Java命名规范

    驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰式命名. 为避免歧 ...

  9. android命名规范

    Android 开发规范 (陈杨) (一)注意事项 1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了. 2. 缩进统一为4个空格,将Tab si ...

随机推荐

  1. oracle运算符

    单引号('): 在Oracle中,应该只运用单引号将文本和字符和日期括起来,不能运用引号(包括单双引号)将数字括起来. 双引号("): 在Oracle中,单双引号意思不同.双引号被用来将包含 ...

  2. Jsp的九大对象,七大动作,三大指令

    jsp九大内置对象:1>out 向客户端输出数据,字节流.如out.print(" dgaweyr"); 2>request 接收客户端的http请求.String g ...

  3. Node学习笔记(四):gulp+express+io.socket部署angularJs2(填坑篇)

    这篇就先暂停下上篇博客--你画我猜的进度,因为在做这个游戏的时候,想采用最新的ng2技术,奈何坑是一片又一片,这边就先介绍下环境部署和填坑史 既然要用ng2,首先要拿到资源,我这边用的是angular ...

  4. Dapper-据说stackoverflow使用的orm

    using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...

  5. C#-#define条件编译

    本文导读: C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define.#undef.#if,#elif,#else和#endif等等,下面介绍 ...

  6. 如何在虚拟机里安装Linux

    本篇仅为作业... 实验课程:Linux 实验机器:联想y410p 指导老师:刘臣奇 实验时间:2016年9月25日 学生学号:140815 姓名:杨文乾 一.先安装虚拟机,之后创建一个新的虚拟机 之 ...

  7. wpf 列表、菜单 收起与展开,通过Grid DoubleAnimation或者Expander实现

    菜单收缩有很多种方法具体如何实现还是看个人想法: 第一种通过后台控制收起与展开: 效果图: 代码 : <Grid> <Grid.ColumnDefinitions> <C ...

  8. php简单实现socket通信

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  9. linux使用wkhtmltopdf报错error while loading shared libraries:

    官网提示 linux需要这些动态库.depends on: zlib, fontconfig, freetype, X11 libs (libX11, libXext, libXrender) 在li ...

  10. storm0.9.5集群安装

    安装前的准备工作 关闭防火墙 chkconfig iptables off && setenforce 0 创建用户 groupadd realtime && user ...