新普京网站-澳门新普京 > 前端 > 【新普京网站】编程风格指南,项目命名约定

【新普京网站】编程风格指南,项目命名约定

2019/12/29 23:56

最入眼的意气风发致性准则是命名管理. 命名风格神速获著名字代表是如何东东: 类型? 变量? 函数? 常量? 宏 … ? 以致没有须要去追寻类型注明. 大家大脑中的方式相配引擎能够丰富可信的拍卖那一个命名法规.

5. 常量命名

总述

声明为 constexprconst 的变量, 或在程序运维时期其值始终维持不改变的, 命名时以 “k” 初始, 大小写混合. 举例:

const int kDaysInAWeek = 7;

说明

澳门新普京 ,全部具备静态存款和储蓄类型的变量 (比方静态变量或全局变量, 参见 储存类型卡塔尔都应当以此情势命名. 对于其它部存储器储类型的变量, 如自动变量等, 这条法规是可选的. 假设不使用那条准绳, 就依据平时的变量命名准绳.

6.3. 连串命名

体系名称的各样单词首字母均大写, 不带有下划线: MyExcitingClassMyExcitingEnum.

具有连串命名 —— 类, 结构体, 类型定义 (typedef卡塔尔(قطر‎, 枚举 —— 均使用肖似约定. 举例:

// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...

// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;

// enums
enum UrlTableErrors { ...
7. 命名空间命名

总述

命名空间以小写字母命名. 最高档命名空间的名字决议于项目名称. 要潜心幸免嵌套命名空间的名字之间和广阔的一等命名空间的名字之间发生冲突.

意气风发品命名空间的名号应当是类小名可能是该命名空间中的代码所属的团组织的名字. 命名空间中的代码, 应当寄放于和命名空间的名字相称的公文夹或其子文件夹中.

注意 不利用缩写作为名称 的法规相仿适用于命名空间. 命名空间中的代码极少需求涉及命名空间的名目, 由此未有要求在命名空间中央银行使缩写.

要幸免嵌套的命名空间与普及的甲级命名空间发著名称冲突. 由于名称查找准绳的留存, 命名空间之间的冲突完全有十分的大概率引致编写翻译失利. 特别是, 不要创设嵌套的 std 命名空间. 提出使用更非常的品类标志符 (websearch::index, websearch::index_util卡塔尔而非管见所及的极易爆发冲突的名称 (比方 websearch::util).

对于 internal 命名空间, 要小心插足到平等 internal 命名空间的代码之间发生冲突 (由于内部维护职员不乏先例来自同一团队, 由此常有一点都不小大概造成冲突State of Qatar. 在此种情景下, 请使用文件名以使得内部名称并世无双(比方对于 frobber.h, 使用 websearch::index::frobber_internal).

6.5. 常量命名

在大局或类里的常量名称前加 k: kDaysInAWeek. 且除去初阶的 k 之外种种单词先河字母均大写。

有着编写翻译时常量, 无论是局地的, 全局的依旧类中的, 和任何变量稍稍分裂一下. k 后接大写字母伊始的单词:

const int kDaysInAWeek = 7;

那法则适用于编写翻译时的局地成效域常量,但是要按变量法规来命名也足以。

4. 变量命名

总述

变量 (包涵函数参数State of Qatar 和数码成员名生机勃勃律小写, 单词之间用下划线连接. 类的分子变量以下划线结尾, 但布局体的就不要, 如: a_local_variable, a_struct_data_member新普京网站 ,, a_class_data_member_.

说明

6.4. 变量命名

变量名风姿罗曼蒂克律小写, 单词之间用下划线连接. 类的积极分子变量以下划线结尾, 但构造体的就毫无,如:: a_local_variablea_struct_data_membera_class_data_member_.

万般变量命名:

举例:

string table_name;  // 可 - 用下划线。
string tablename;   // 可 - 全小写。

Warning

string tableName;   // 差 - 混合大小写。

类数据成员:

无论是是静态的还是非静态的,类数据成员都足以和平日变量同样, 但要收下划线。

class TableInfo {
  ...
 private:
  string table_name_;  // 可 - 尾后加下划线。
  string tablename_;   // 可。
  static Pool<TableInfo>* pool_;  // 可。
};

布局体变量:

任由是静态的要么非静态的,布局体数据成员都能够和日常变量同样, 不用像类那样接下划线:

struct UrlTableProperties {
    string name;
    int num_entries;
}

布局体与类的钻探参照他事他说加以侦查 结构体 vs. 类 一节.

全局变量:

对全局变量未有特意必要, 少用就好, 但倘让你要用, 能够用 g_ 或其余标识作为前缀, 以便越来越好的界别局地变量.

类数据成员

任由是静态的要么非静态的, 类数据成员都能够和平凡变量相符, 但要接到划线.

class TableInfo {
  ...
 private:
  string table_name_;  // 好 - 后加下划线.
  string tablename_;   // 好.
  static Pool<TableInfo>* pool_;  // 好.
};

取名法则有所一定随便性, 但相比较按个人喜好命名, 朝气蓬勃致性更重, 所以不管您怎么想, 法则总归是法规.

10. 命名法规的特例

总述

设若您命名的实业与本来就有 C/C++ 实体相通, 可参照现存命名计谋.

bigopen(): 函数名, 参照 open() 的形式

uint: typedef

bigpos: structclass, 参照 pos 的形式

sparse_hash_map: STL 型实体; 参照 STL 命名约定

LONGLONG_MAX: 常量, 如同 INT_MAX

文章内容来自 Google开源项目风格指南

6.2. 文书命名

文本名要全部大写, 能够分包下划线 (_卡塔尔 或连字符 (-卡塔尔国. 按系列约定来. 假使并未项目约定,”_” 更好。

可承当的文书命名:

* my_useful_class.cc
* my-useful-class.cc
* myusefulclass.cc
* muusefulclass_test.cc // ``_unittest`` 和 ``_regtest`` 已弃用。

C++ 文件要以 .cc 结尾, 头文件以 .h 结尾. 特地插入文本的文件则以 .inc 结尾,参见 1.1. Self-contained 头文件。

实际不是接收已经存在于 /usr/include 下的文书名 (Yang.Y 注: 即编写翻译器搜索系统头文件的门径卡塔尔(قطر‎, 如 db.h.

日常应尽只怕让文件名尤其显然. http_server_logs.h 就比 logs.h 要好. 定义类时文件名类同成对现身, 如 foo_bar.h 和 foo_bar.cc, 对应于类 FooBar.

内联函数必得放在 .h 文件中. 借使内联函数不够长, 就径直放在 .h 中.

1. 通用命名准则

总述

函数命名, 变量命名, 文件命名要有描述性; 少用缩写.

说明

尽或者使用描述性的命名, 别心痛空间, 究竟相比较之下让代码易于新读者驾驭更重视. 不要用独有项目开垦者能清楚的缩写, 也毫无通过砍掉多少个字母来缩写单词.

int price_count_reader;    // 无缩写
int num_errors;            // "num" 是一个常见的写法
int num_dns_connections;   // 人人都知道 "DNS" 是什么

int n;                     // 毫无意义.
int nerr;                  // 含糊不清的缩写.
int n_comp_conns;          // 含糊不清的缩写.
int wgc_connections;       // 只有贵团队知道是什么意思.
int pc_reader;             // "pc" 有太多可能的解释了.
int cstmr_id;              // 删减了若干字母.

只顾, 一些特定的盛名的缩写是允许的, 比方用 i 表示迭代变量和用 T 表示模板参数.

模板参数的命名应当依据对应的分类: 类型模板参数应当依据 品种命名 的法规, 而非类型模板应当遵照 变量命名 的规则.

本种类作品

  • Google C++ 编制程序风格指南:头文件
  • 谷歌(Google卡塔尔(قطر‎ C++ 编制程序风格指南:功用域
  • 谷歌(Google卡塔尔(قطر‎ C++ 编制程序风格指南:类
  • Google C++ 编制程序风格指南:来自 Google的奇技
  • 谷歌(GoogleState of Qatar C++ 编制程序风格指南:别的 C++ 性情
  • Google C++ 编制程序风格指南:命名约定
  • Google C++ 编制程序风格指南:注释
  • Google C++ 编制程序风格指南:格式
8. 枚举命名

总述

枚举的命名应当和 常量 或 宏 一致: kEnumName 或是 ENUM_NAME.

说明

单独的枚举值应该事情未发生前使用 常量 的命超级模特式. 但 宏 方式的命名也得以接收. 枚举名 UrlTableErrors(以及 AlternateUrlTableErrorsState of Qatar 是体系, 所以要用大小写混合的方式.

enum UrlTableErrors {
    kOK = 0,
    kErrorOutOfMemory,
    kErrorMalformedInput,
};
enum AlternateUrlTableErrors {
    OK = 0,
    OUT_OF_MEMORY = 1,
    MALFORMED_INPUT = 2,
};

二〇〇九 年 1 月早前, 大家直接建议使用 宏 的章程命名枚举值. 由于枚举值和宏之间的命名冲突, 直接促成了累累标题. 因此, 这里改为优先选项常量风格的命名情势. 新代码应该尽量优先使用常量风格. 可是老代码没需要切换成常量风格, 除非宏风格确实会发出编写翻译期难点.

上一篇:内核到底长啥样,漫画赏析 下一篇:没有了