C++程式設計規範約定
阿新 • • 發佈:2019-02-05
前言
從小就寫字很挫,所以受夠了被人鄙視的感覺,今天有個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。
constint 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