zoukankan      html  css  js  c++  java
  • Google C++编程风格指南

    前言


     

      从小就写字很挫,所以受够了被人鄙视的感觉,今天有个coder突然跟我说,你的代码怎么像小孩写的一样,顿时心情沮丧的极点。越来越发现一致的编程风格的重要性,于是把Google的C++编程风格指南看了一遍, 这里记录下于自己有益的rules。当规则有多个选择时,这里只记录个人习惯的用法, 并不代表它是唯一的用法。


    命名约定

    命名管理是最重要的一致性规则,因此我把它放在最前面。

    • 尽可能给出描述性名称。
    int num_errors; 
    int num_completed_connections;
    • 文件名全部小写,用下划线做连接符。
    my_useful_class.cc
    • C++文件以.cc 结尾,头文件以.h 结尾。(从.cpp切换到.cc)
    my_useful_class.cc
    my_useful_class.h
    • 类型命名每个单词以大写字母开头,不包含下划线。类、结构体、类型定义(typedef) 、枚举都使用相同约定。
    // classes and structs
    class UrlTable { ...
    class UrlTableTester { ...
    struct UrlTableProperties { ...
    
    // typedefs
    typedef hash_map<UrlTableProperties *, string> PropertiesMap;
    
    // enums
    enum UrlTableErrors { ...
    • 变量名一律小写,单词之间用下划线连接。类的成员变量以下划线结尾。
    my_exciting_local_variable
    my_exciting_member_variable_
    • 结构体的数据成员可以和普通变量一样,不用像类那样接下划线。
    struct UrlTableProperties {
        string name;
        int num_entries;
    }
    • 少用全局变量,要用的话用g作为其前缀(不喜欢用g_)。
    bool gInvalid = false;
    • 常量命名在名称前加k。
    const int kDaysInAWeek = 7;
    • 函数名的每个单词首字母大写,没有下划线。
    AddTableEntry()
    DeleteUrl()
    • 取值和设值函数要与存取的变量名匹配,使用小写单词及下划线。
    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_;
    };
    • 非常短小的内联函数也可以用小写字母命名。
    void swap(int &a, int &b);
    int max(int a, int b);
    bool cmp(Type t1, Type t2);
    • 名字空间用小写字母命名,并基于项目名称和目录结构:
    namespace google_awesome_project {
        ...
    }
    • 枚举值应该优先采用常量的命名方式。
    enum UrlTableErrors {
        kOK = 0,
        kErrorOutOfMemory,
        kErrorMalformedInput,
    };
    • 尽量避免使用宏,如果不得不用,请使用大写字母及下划线。
    #define ROUND(x) ...
    #define PI_ROUNDED 3.0
  • 相关阅读:
    新一代MQ apache pulsar的架构与核心概念
    Flutter使用fluwx实现微信分享
    BZOJ3622 已经没有什么好害怕的了 动态规划 容斥原理 组合数学
    NOIP2016提高组Day1T2 天天爱跑步 树链剖分 LCA 倍增 差分
    Codeforces 555C Case of Chocolate 其他
    NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
    NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
    NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
    Codeforces 873F Forbidden Indices 字符串 SAM/(SA+单调栈)
    Codeforces 873E Awards For Contestants ST表
  • 原文地址:https://www.cnblogs.com/akira90/p/3366867.html
Copyright © 2011-2022 走看看