該命名規則爲本人總結並計劃以後使用的一套規範,參考經典C++規範及golang的命名規範,我的以爲golang在某些命名規範上比較簡潔、統一,令人易於理解,藉助於現代化的編輯工具,咱們再也不須要過於繁瑣的自說明的命名方式。golang
聲明位置與使用位置越遠,則命名應當越長。api
文件名所有小寫,能夠含下劃線或連字符,按項目約定命名,且儘可能保證文件名明確。好比:app
cmd_save_player_info_class.cc函數
my_use_full_class.cc工具
定義類的文件名通常是成對出現,如:post
foo_bar.hui
foo_bar.ccurl
如果類中含大量內聯函數,咱們還可以使用-ini.h文件,使之文件內容更加清晰,因而又如:spa
url_table.hcode
url_table.cc
url-table-ini.h
類型命名每一個單詞首字母大寫,不含下劃線,以名詞形式,這對於全部類型命名同樣,類結構體,枚舉,類定義都是如此。好比:
class MyPalayerManager{ } struct MyPalayerManager{ } enum Week{ MON; WEEK_NUM; }
若是模塊的功能較爲複雜、常量名稱容易混淆的狀況下,爲了更好地區分枚舉類型,可使用完整的前綴:
enum PullRequestStatus { PULL_REQUEST_STATUS_CONFLICT; PULL_REQUEST_STATUS_CHECKING; PULL_REQUEST_STATUS_MERGEABLE; }
常量均需使用所有大寫字母組成,並使用下劃線分詞:
const int APP_VER = "1.0";
變量名一概採用駝峯式命名規則,例如:
int playerID; string tableName;
變量命名基本上遵循相應的英文表達或簡寫,在相對簡單的環境(對象數量少、針對性強)中,能夠將一些名稱由完整單詞簡寫爲單個字母,例如:
bool isExist; bool hasConflict; bool canManage; bool allowGitHook;
私有成員變量首字母小寫,公有成員變量首字母大寫,(此條規則是基於通常不會有public的成員變量,大多數是以static形式提供類成員變量),好比:
class Player{ public: int PlayerID; static Player PlayerInst; private: string playerName; }
首字母大寫,全局static變量首字母小寫,好比 :
int SystemTime; static int systemTime;
變量名稱通常遵循駝峯法,但遇到特有名詞時,須要遵循如下規則:
下面列舉了一些常見的特有名詞:
// A GonicMapper that contains a list of common initialisms taken from golang/lint var LintGonicMapper = GonicMapper{ "API": true, "ASCII": true, "CPU": true, "CSS": true, "DNS": true, "EOF": true, "GUID": true, "HTML": true, "HTTP": true, "HTTPS": true, "ID": true, "IP": true, "JSON": true, "LHS": true, "QPS": true, "RAM": true, "RHS": true, "RPC": true, "SLA": true, "SMTP": true, "SSH": true, "TLS": true, "TTL": true, "UI": true, "UID": true, "UUID": true, "URI": true, "URL": true, "UTF8": true, "VM": true, "XML": true, "XSRF": true, "XSS": true, }
函數的參數和局部變量相似,可是它們默認還具備文檔的功能
當參數類型具備描述性的時候,參數名就應該儘量短小:
int AfterFunc(Duration d); int Escape(Player p);
當參數類型比較模糊的時候,參數名就應當具備文檔的功能:
int Unix(int sec, int nsec); bool HasPrefix(string s, string prefix);
常規函數每一個單詞首字母大寫,使用命令式語氣,好比:
int OpenFile(const string f); bool CheckFileName(const string f);
成員函數,公有函數首字母大寫,私有函數首字母小寫,好比:
class Player{ public: void OpenFile(const string f); private: void openFile(const string f); };
命名空間首字母大寫,好比:
namespace Network;
若是你必定要用到宏,全大寫加下劃線,好比:
#define PI_ROUND 3.0