google_cpp编程规范要点整理

文件夹名一律小写,单词之间用下划线连接。


文件名一律小写,单词之间用下划线连接。


源文件名以.cpp结尾,头文件名以.h结尾,接口头文件名以_interface.h结尾。


头文件#define保护的格式:
#define 工程名_文件夹名1_子文件夹名2_头文件名_H_,全部大写,单词之间用下划线连接。


头文件,特别是接口头文件中,不是必须用#include包含的头文件,可以用前置声明代替,如class xx;,只有做可以减少编译依赖。


源文件foo.cpp中的#indelue顺序:
1 foo2.h
2 C 系统文件
3 C++ 系统文件
4 其他库的.h文件
5 本项目内.h文件
其中每个部分按ASCII码值顺序排列。


类的访问控制区段的声明顺序依次为:public,protected,private。如果某区段没内容,可以不声明。
每个区段内的声明通常按以下顺序:
typedefs和枚举
常量
构造函数
析构函数
成员函数,含静态成员函数
数据成员,含静态数据成员


基本数据类型建议使用int8_t, int32_t, int32_t, int64_t, float, double,不建议使用char, short, int, long等。


无符号数在与0比较时很容易除错,建议不要使用uint32_t等无符号整型(除非你是在表示一个位组而不是一个数值,或是你需要定义二进制补码溢出),尤其是不要为了指出数值永不会为负,而使用无符号类型。


namespace名全小写,单词之间用下划线连接。不建议用using namespace std;提前声明,建议用namespace的全路径,如std::string。


类型名的每个单词首字母均大写,单词之间不包含下划线,即驼峰法,如:MyExcitingClass、MyExcitingEnum。所有类型命名,包括类、结构体、类型定义 (typedef)、枚举,均使用该命名规则。接口名以Interface为后缀。


变量名一律小写,单词之间用下划线连接,如:
my_exciting_local_variable


类的成员变量以下划线结尾,如:
my_exciting_member_variable_


将类的所有数据成员声明为private。


结构体的数据成员不用像类的成员变量那样以下划线结尾:
struct UrlTableProperties {
    string name;
    int num_entries;
}


全局变量用g_作为前缀。


所有编译时常量,无论是局部的、全局的、还是类中的,和其他变量稍微区别一下,以k后接大写字母开头的单词,如:
const int kDaysInAWeek = 7; 


单独的枚举值应该优先采用常量的命名方式,但宏方式的命名也可以接受,如:
enum UrlTableErrors {
    kOK = 0,
    kErrorOutOfMemory,
    kErrorMalformedInput,
};
enum AlternateUrlTableErrors {
    OK = 0,
    OUT_OF_MEMORY = 1,
    MALFORMED_INPUT = 2,
};


永远不要用省略字母的缩写:
int error_count;  // Good.
int error_cnt;    // Bad.


常规函数:
函数名的每个单词首字母大写,没有下划线,如:
AddTableEntry()
DeleteUrl()
取值和设值函数:
取值和设值函数要与存取的变量名匹配,如int num_entries_ 是该类的实例变量,则相应的存取函数为:
class MyClass {
    public:
        ...
        int num_entries() const { return num_entries_; }
        void set_num_entries(int num_entries) { num_entries_ = num_entries; }


    private:
        int num_entries_;
};
一般在头文件中把存取函数定义成内联函数。


函数参数顺序从左到右为:输入参数,然后是输出参数。


不允许使用缺省函数参数。


不在构造函数中做太多逻辑相关的初始化,建议提供Initialize和Finalize函数做初始化和清理相关的工作。


建议为所有类提供一个无参的构造函数和析构函数,以覆盖编译器的默认行为。


为避免隐式转换,应该将单参数构造函数声明为explicit的。


在声明的变量或参数前加上关键字const用于指明变量值不可被篡改(如 const int foo )。
将const放在前面才更易读,因为在自然语言中形容词(const)是在名词 (int)之前,如const int* foo;。


为类中的函数加上const限定符表明该函数不会修改类成员变量的状态(如 class Foo { int Bar(char c) const; };)。


宏名一律大写,单词之间用下划线连接。不建议使用宏。


不要使用 C 风格类型转换,而应该使用 C++ 风格。
用static_cast替代 C 风格的值转换,,或某个类指针需要明确的向上转换为父类指针时。
用const_cast去掉const限定符。
用reinterpret_cast指针类型和整型或其它指针之间进行不安全的相互转换,仅在你对所做一切了然于心时使用。
dynamic_cast在测试代码以外不要使用。除了测试代码,如果你需要在运行时确定类型信息,说明有设计缺陷。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: qbs_cpp_scanner是一个用于C++项目的扫描器。在编写C++项目时,我们需要遵循一些特定的规则,这些规则定义了文件和代码的结构,以及如何组织和访问它们。扫描器的作用是分析C++项目的源代码,并根据规则来检查代码的正确性和合法性。 具体来说,qbs_cpp_scanner将会: 1. 扫描目标文件夹中的所有源代码文件,包括头文件和源文件。 2. 分析代码文件的结构和内容,例如函数和类的定义、变量声明等。 3. 检查代码文件中的错误和警告,例如语法错误、未声明的变量等。 4. 检查代码文件的命名规则,例如变量名、函数名和类名是否符合约定。 5. 检查代码文件之间的依赖关系是否正确,例如文件的包含关系和头文件的引用关系。 6. 根据扫描结果生成报告,包括错误和警告信息,以及建议的修复方法。 通过使用qbs_cpp_scanner,我们可以减少代码错误和警告,改善代码的可读性和可维护性。它可以帮助开发人员更好地理解代码结构,并找到潜在的问题和改进点。它也可以作为团队合作的工具,帮助团队成员在编写代码时遵循相同的规则和标准。 总而言之,qbs_cpp_scanner是一个功能强大的工具,用于分析和检查C++项目的源代码。它可以提高代码质量、减少错误,并帮助开发人员更好地协作和维护代码。 ### 回答2: qbs_cpp_scanner是一个用于C++代码扫描的工具。它可以帮助开发者分析和检查C++代码中存在的问题,以确保代码的质量和规范性。 qbs_cpp_scanner可以执行各种静态代码分析任务,例如检查代码中的错误、潜在漏洞、不规范的编码风格和低效的逻辑结构。它可以识别可能导致程序崩溃、内存泄漏、资源泄漏或其他问题的代码模式。 使用qbs_cpp_scanner,开发者可以获得代码质量的快速评估。它可以生成关于代码中发现的问题的报告,包括错误类型、位置和建议的修复方法。这样开发者就可以快速定位和解决潜在的代码问题,提高代码的可靠性和可维护性。 此外,qbs_cpp_scanner还提供了集成开发环境(IDE)插件,以便于开发者在编写代码时进行实时的静态代码分析。这样可以在开发过程中即时发现和解决代码问题,避免在编译和运行时才被发现,并减少代码调试和修复的工作量。 总之,qbs_cpp_scanner是一个功能强大的C++代码扫描工具,它可以帮助开发者改进代码质量、减少错误和漏洞,并提高软件的稳定性和可靠性。 ### 回答3: qbs_cpp_scanner是一个用于C++语言的代码扫描器,用于分析C++源代码并提取有用的信息。它能够识别和解析C++代码结构,如类、结构体、函数等,从而帮助程序员更好地理解和维护代码。 该扫描器可以在编译过程之前运行,它会读取源代码文件,并根据预定义的规则来扫描代码。 使用qbs_cpp_scanner,程序员可以使用自定义的规则来提取他们感兴趣的代码信息。这些规则通常会通过正则表达式或其他方式对源代码进行匹配,并提取相关的代码片段。 除了提取代码片段,qbs_cpp_scanner还可以识别代码中的依赖关系,并将这些信息传递给构建系统,以便自动化地解决代码依赖关系。 例如,当一个C++源文件包含了一个头文件时,qbs_cpp_scanner可以发现这个依赖并将其传递给构建系统,从而确保在编译时正确地包含所需的头文件。 总的来说,qbs_cpp_scanner可以帮助程序员更好地理解和维护C++源代码。它提供了灵活的规则和功能,使得在构建过程之前对代码进行静态分析成为可能。这将有助于提高代码质量和可维护性,减少潜在的错误和问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值