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
相關文章
相關標籤/搜索