该命名规则为本人总结并计划以后使用的一套规范,参考经典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