Google C++编程风格指南(五):命名约定

1.总体规则:不要随意缩写;2.宏、枚举等使用全部大写+下划线;3.变量(含类、结构体成员变量)、文件、命名空间、存取函数等使用全部小写+下划线,类成员变量以下划线结尾,全局变量以g_开头;4.参考现有或相近命名约定……

命名约定

最重要的一致性规则是命名管理,命名风格直接可以直接确定命名实体是:类型、变量、函数、常量、宏等等,无需查找实体声明,我们大脑中的模式匹配引擎依赖于这些命名规则。

命名规则具有一定随意性,但相比按个人喜好命名,一致性更重要,所以不管你怎么想,规则总归是规则。

1.通用命名规则(General Naming Rules)

函数命名、变量命名、文件命名应具有描述性,不要过度缩写,类型和变量应该是名词,函数名可以用“命令性”动词。

如何命名:

尽可能给出描述性名称,不要节约空间,让别人很快理解你的代码更重要,好的命名选择:

int num_errors; // Good.

int num_completed_connections; // Good.

丑陋的命名使用模糊的缩写或随意的字符:

int n; // Bad - meaningless.
int nerr; // Bad - ambiguous abbreviation.
int n_comp_conns; // Bad - ambiguous abbreviation.

类型和变量名一般为名词:如FileOpener、num_errors。

函数名通常是指令性的,如OpenFile()、set_num_errors(),访问函数需要描述的更细致,要与其访问的变量相吻合。

缩写:

除非放到项目外也非常明了,否则不要使用缩写,例如:

// Good
// These show proper names with no abbreviations.
int num_dns_connections; // Most people know what "DNS" stands for.
int price_count_reader; // OK, price count.Makes sense.// Bad!
// Abbreviations can be confusing or ambiguous outside a small group.
int wgc_connections; // Only your group knows what this stands for.
int pc_reader; // Lots of things can be abbreviated "pc".

不要用省略字母的缩写:

int error_count; // Good.int error_cnt; // Bad.

2.文件命名(File Names)

文件名要全部小写,可以包含下划线(_)或短线(-),按项目约定来。

可接受的文件命名:

my_useful_class.cc
my-useful-class.cc
myusefulclass.cc

C++文件以.cc结尾,头文件以.h结尾。

不要使用已经存在于/usr/include下的文件名(译者注,对UNIX、Linux等系统而言),如db.h。

通常,尽量让文件名更加明确,http_server_logs.h就比logs.h要好,定义类时文件名一般成对出现,如foo_bar.h和foo_bar.cc,对应类FooBar。

内联函数必须放在.h文件中,如果内联函数比较短,就直接放在.h中。如果代码比较长,可以放到以-inl.h结尾的文件中。对于包含大量内联代码的类,可以有三个文件:

url_table.h // The class declaration.
url_table.cc // The class definition.
url_table-inl.h // Inline functions that include lots of code.

参考第一篇-inl.h文件一节。

时间: 2024-09-27 02:34:45

Google C++编程风格指南(五):命名约定的相关文章

Google C++编程风格指南(八):规则之例外

编程风格指南的使用要点在于提供一个公共的编码规范,所有人可以把精力集中在实现内容而不是表现形式上.我们给出了全局的风格规范,但局部的风格也很重要,如果你在一个文件中新加的代码和原有代码风格相去甚远的话,这就破坏了文件本身的整体美观也影响阅读 规则之例外 前面说明的编码习惯基本是强制性的,但所有优秀的规则都允许例外. 1. 现有不统一代码(Existing Non-conformant Code) 对于现有不符合既定编程风格的代码可以网开一面. 当你修改使用其他风格的代码时,为了与代码原有风格保持

Google Java 编程风格指南

前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准.然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见. 1.1 术语说明 在本文档中,除非另有说明: 术语class可表示一个普通类,枚举类,接口或是annotation类型(@interfac

Google Java编程风格指南

作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. 目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Googl

Google Python编程风格指南

背景 Python 是 Google主要的脚本语言.这本风格指南主要包含的是针对python的编程准则. 为帮助读者能够将代码准确格式化,我们提供了针对 Vim的配置文件 .对于Emacs用户,保持默认设置即可. Python语言规范 Lint 对你的代码运行pylint 定义: pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dynamic)语言, 这些bug通常由编译器来捕获. 由于Python的动态特性, 有些警告可能

Google C++编程风格指南(一)

背景 Google的开源项目大多使用C++开发.每一个C++程序员也都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug.难于阅读和维护. 本指南的目的是通过详细阐述在C++编码时要怎样写.不要怎样写来规避其复杂性.这些规则可在允许代码有效使用C++语言特性的同时使其易于管理. 风格,也被视为可读性,主要指称管理C++代码的习惯.使用术语风格有点用词不当,因为这些习惯远不止源代码文件格式这么简单. 使代码易于管理的方法之一是增强代码一致性,让

Google C++编程风格指南(七):格式

1.行宽原则上不超过80列,把22寸的显示屏都占完,怎么也说不过去:2.尽量不使用非ASCII字符:3.UNIX/Linux下无条件使用空格,MSVC的话使用Tab也无可厚非:4.函数参数.逻辑条件.初始化列表:要么所有参数和函数名放在同一行,要么所有参数并排分行-- 格式 代码风格和格式确实比较随意,但一个项目中所有人遵循同一风格是非常容易的,作为个人未必同意下述格式规则的每一处,但整个项目服从统一的编程风格是很重要的,这样做才能让所有人在阅读和理解代码时更加容易. 1.行长度(Line Le

Google C++编程风格指南(六):代码注释

注释 注释虽然写起来很痛苦,但对保证代码可读性至为重要,下面的规则描述了应该注释什么.注释在哪儿.当然也要记住,注释的确很重要,但最好的代码本身就是文档(self-documenting),类型和变量命名意义明确要比通过注释解释模糊的命名好得多. 注释是为别人(下一个需要理解你的代码的人)而写的,认真点吧,那下一个人可能就是你! 1.注释风格(Comment Style) 使用//或/* */,统一就好. //或/* */都可以,//只是用的更加广泛,在如何注释和注释风格上确保统一. 2.文件注

Google C++编程风格指南(四):智能指针和其他C++特性

1.对于智能指针,安全第一.方便第二,尽可能局部化(scoped_ptr): 2.引用形参加上const,否则使用指针形参:3.函数重载的使用要清晰.易读:4.鉴于容易误用,禁止使用缺省函数参数(值得商榷):5.禁止使用变长数组:6.合理使用友元-- Google特有的风情 Google有很多自己实现的使C++代码更加健壮的技巧.功能,以及有异于别处的C++的使用方式. 1.智能指针(Smart Pointers) 如果确实需要使用智能指针的话,scoped_ptr完全可以胜任.在非常特殊的情况

Google C++编程风格指南(三):C++类

关于类的注意事项,总结一下:1. 不在构造函数中做太多逻辑相关的初始化: 2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器不再提供,需要编码者自行提供默认构造函数:3. 为避免隐式转换,需将单参数构造函数声明为explicit:-- 类 类是C++中基本的代码单元,自然被广泛使用.本节列举了在写一个类时要做什么.不要做什么. 1. 构造函数(Constructor)的职责 构造函数中只进行那些没有实际意义的(trivial,译者注:简单初始化对于程序执行没有实际