google编码规范——Naming
来源:互联网 发布:上海市数据交易中心 编辑:程序博客网 时间:2024/04/30 22:34
General Naming Rules
函数名,变量名和文件名应该是描述性的,要避免缩写。类型和变量应该是名词,函数名应该是带有命令式的动词。
How to Name
尽可能给出一个描述性的合理的名字。不要担心节省水平空间,因为这并远远不及使得你的代码让新读者容易读懂重要。以下都是好的命名:
int num_errors; // Good.
int num_completed_connections; // Good.
不好的命名用了不传递任何含义的模糊的缩写或者任意的字符。
int n; // Bad -meaningless.
int nerr; // Bad - ambiguousabbreviation.
int n_comp_conns; // Bad - ambiguous abbreviation.
类型和变量名通常应该是名词,例如,FileOpener, num_errors.
函数名通常应该是带有命令式的:例如,OpenFile(), set_num_errors()。取值函数例外。
Abbreviations
不要用缩写,除非它们是众所周知的。例如:
// Good
// These show proper names with noabbreviations.
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 orambiguous outside a small group.
int wgc_connections; // Only your group knows what this standsfor.
int pc_reader; // Lots of things can be abbreviated"pc".
不要用省掉字母的缩写方式:
int error_count; // Good.
int error_cnt; // Bad.
File Names
文件名应该是都是小写,可以包含下划线(_)或者破折号(-)。按照你的项目中使用的惯例。如果没有一致的模式,最好用“_”.。
以下例子都是可以接收的文件名:
my_useful_class.cc
my-useful-class.cc
myusefulclass.cc
myusefulclass_test.cc // _unittest and _regtest are deprecated.
C++源文件应该是 .cpp,头文件应该是 .h结尾。
不要用存在 于/usr/include中的文件名,如 db.h。
一般的,你的文件名应该是很具体。例如,用http_server_logs.h 而不是 logs.h。通常情况下是有成对的文件,如用foo_bar.h和foo_bar.cpp定义类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 ofcode.
Type Names
类型名开头和每个新单词的首字母为大写,而且不带下划线:MyExcitingClass, MyExcitingEnum.
所有类型名:class,struct,typedefs和enum都有相同的命名规则。类型名开头和每个新单词的首字母应该为大写,而且不带下划线
// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map<UrlTableProperties *,string> PropertiesMap;
// enums
enum UrlTableErrors { ...
Variable Names
变量名都是小写的,而且单词之间用下划线连接。类成员变量有末尾的下划线。my_exciting_local_variable ,my_exciting_member_variable_.
常见的变量名:
例如:
string table_name; // OK - uses underscore.
string tablename; // OK - all lowercase.
string tableName; // Bad - mixed case.
类数据成员:
数据成员都是小写,可以有选择的像普通的变量名带下划线,但是总是带末尾的下划线。
string table_name_; // OK - underscore at end.
string tablename_; // OK.
结构变量:
结构体数据成员名应该像普通的变量名一样,不像类成员那样带末尾下划线。
struct UrlTableProperties
{
string name;
intnum_entries;
}
全局变量:
对于在任何情况下都很少出现的全局变量没有特别的需求, 如果你需要用全局变量,可以用 g_ 前缀或者其他可以很容易与局部变量区别的标记。
Constant Names
用k开头,后面跟着混合大小写的名字:kDaysInAWeek.
所有编译时常量,不管是局部的,全局的,或者是类成员,遵循一个与其他变量稍微不同的命名规则。用k开头,后面跟着首字母是大写的单词。
const int kDaysInAWeek = 7;
Function Names
正规的函数名是大小写混合的,变量的存取函数与变量名相匹配:MyExcitingFunction(), MyExcitingMethod(), my_exciting_member_variable(),set_my_exciting_member_variable().
Regular Functions
函数名的首字母和每个单词的首字母也是大写,并且没有下划线。
如果函数可能在发生错误的地方崩溃,你应该在函数名后面加OrDie,,这只用在正常操作时可能出现错误的函数。
AddTableEntry()
DeleteUrl()
OpenFileOrDie()
Accessors and Mutators
访问和赋值函数名应该和它们获取或设置值的变量名匹配。
class MyClass {
public:
...
intnum_entries() const { return num_entries_; }
void set_num_entries(int num_entries) { num_entries_ = num_entries; }
private:
intnum_entries_;
};
对于其他很简短的内联函数名你也可能用小写。例如,如果一个函数代价不高,当你在循环里调用它可能不存在值,那么用小写字母的函数名是可以接受。
Namespace Names
命名空间名字都是小写,并且一句项目名和项目目录结构:google_awesome_project
Enumerator Names
枚举名要么像常量,要么像宏一样: kEnumName 或 ENUM_NAME
最好,单独的枚举命名应该跟常量一样。然而,跟宏命名一样也是可以接受的。枚举名 ,UrlTableErrors,是一个类型,所以大小写混合。
enum UrlTableErrors {
kOK= 0,
kErrorOutOfMemory,
kErrorMalformedInput,
};
enum AlternateUrlTableErrors {
OK= 0,
OUT_OF_MEMORY = 1,
MALFORMED_INPUT = 2,
};
直到2009年1月,枚举值命名风格还是跟宏一样。这引起了枚举值和宏的命名冲突。因此,形成一致的命名风格还在实施中。新的代码应尽可能用不变的命名风格。然而,也没有理由改变旧的代码用新的命名风格,除非就的名字实在引发了编译问题。
Macro Names
你不是真的需要定义一个宏。如果真的需要,可以像这样定义: MY_MACRO_THAT_SCARES_SMALL_CHILDREN
通常不应该用宏。然而,如果绝对需要,宏名应该是由大写字母和下划线组成。
#define ROUND(x) ...
#define PI_ROUNDED 3.0
Exceptions to Naming Rules
如果你定义一个和已经存在的C或者C++实体类似的实体,你可以遵循已经存在的实体的命名方式。
bigopen()
function name, follows form of open()
uint
typedef
bigpos
struct or class, follows form of pos
sparse_hash_map
STL-like entity; follows STL namingconventions
LONGLONG_MAX
a constant, as in INT_MAX
- google编码规范——Naming
- Java编码规范——google
- Google C++ 编码规范——1.头文件
- Google C++编码规范——2.命名规则
- C++编码规范 —— Google C++ Style
- Google C++编码规范
- Google编码规范
- google编码规范
- Google C++编码规范
- google java编码规范
- Google Java编码规范
- Google Java编码规范
- java编码规范(google)
- Google Java编码规范
- Google Java 编码规范
- Google编码规范
- Google编码规范
- Python 编码规范(Google)
- iOS网络编程
- 导航视图控制器-------------学习笔记
- Submodule 'shFlags' (git://github.com/nvie/shFlags.git) registered for path 'shFlags'
- 买票找零
- 黑马训练营 ------------- 模板设计模式
- google编码规范——Naming
- 险些悔恨终身之hibernate反向生成数据表
- Apache Mina Server 2.0 中文参考手册中文参考手册
- 美日国家级CERT的工作概况与启示
- GDB单步调试uboot时程序执行顺序混乱
- hdu1286-找新朋友
- 黑马训练营 -----------------注解
- 云计算威胁与风险分析
- 慎入:程序猿也要懂国学文史通影视