当前位置:首页 > C++编码规范 (2)
.
1. 命名规则
1.1. 起个合适的名字
1.1.1. 类的名称(适用于C++)
2 类的名称要能告诉我们,这个类是什么。因此,类的名称通常是名词。 2 类的名字不需要告诉我们,它从哪个类继承而来的。
2 有时候加个后缀是很有用的。比如类是一个代理(Agents)时,起名叫DownloadAgent更能表达真实的意图。
1.1.2. 方法和函数的名称(适用于C/C++)
2 方法和函数通常都要执行某种行为,因此,名称要能清楚的说明它做什么:
CheckForErrors() 而不是ErrorCheck(),DumpDataToFile() 而不是 DataFile()。 这样也可以很容易的区别函数和数据。
2 函数名总以动词开头,后面跟随其它名称。这样看起来更自然些。 2 可以加一些必要的后缀: Max – 表示取最大值 Cnt – 表示当前的计数值 Key – 表示键值
例如:RetryMax 表示可接收的最大数,RetryCnt表示当前接收的数量。 2 前缀也同样有用:
Is – 用于询问一些问题。只要看到Is开头,就知道这是一个查询。 Get – 用于获取一个值。 Set – 用于设置一个值。 例如:IsHitRetryLimit.
1.1.3. 含有度量单位的名称(适用于C/C++)
2 如果一个变量用于表示时间,重量或其它度量单位,应把度量单位添加到名称中,以便开发人员更早一步发现问题。 例如:
uint32 mTimeoutMsecs; uint32 mMyWeightLbs;
1.1.4. 缩写名称不要全部大写(适用于C/C++)
2 无论是什么缩写名称,我们总以一个大写字母开头,后面跟随的字母全部用小写。
;.
.
例如:
class FluidOz; // 而不是 FluidOZ
class NetworkAbcKey; // 而不是 NetworkABCKey
1.2.类的命名(适用于C++)
2 用大写字母作为单词的分隔,每个单词的首字母大写,其它字母均小写。 2 名字的第一个字母应大写 2 不含有下划线 ('_') 例如:
class NameOneTwo; class Name;
1.3.类库(或程序库)命名 (适用于C/C++)
2 使用命名空间防止名字冲突。
2 如果编译器没有实现命名空间,需要用前缀来避名名字冲突,不过前缀不要过长(2个字母比较好)。 例如:
John Johnson 完成了一个数据结构的库,它可以使用JJ作为库的前缀,所以类名就象下面这样:
class JjLinkList { }
1.4.方法和函数的命名(适用于C++)
2 使用与类名相同的规则 例如:
class NameOneTwo { public: int DoIt();
void HandleError(); }
1.5.类属性的命名(适用于C++)
;.
.
2 属性(通常是非公有数据成员)名字以字母'm'开头。 2 在 'm(m_)' 后面,使用与类名相同的规则。
2 'm(m_)' 总是位于其它修饰符(如表示指针的 'p')的前面。 例如:
class NameOneTwo { public:
int VarAbc(); int ErrorNumber(); private:
int mVarAbc; int mErrorNumber; String* mpName; }
1.6.方法和函数参数的命名(适用于C++)
2 第一个字母必须小写。
2 第一个字母后面的单词使用与类名相同的规则。 例如:
class NameOneTwo { public:
int StartYourEngines(
Engine&rSomeEngine, Engine&rAnotherEngine); }
1.7.局部变量的命名(适用于C/C++)
2 所有字母都用小写
2 使用下划线 '_' 作为单词的分隔。 例如: int
NameOneTwo::HandleError(int errorNumber) {
;.
.
int error= OsErr(); Time time_of_error; ErrorProcessor error_processor; }
1.8.指针变量的命名前缀(适用于C/C++)
2 指针变量多数情况应在前面加 'p'。 2 星号 '*' 应靠近类型,而不是变量名。 例如:
String* pName=new String;
特别的:String* pName, name; 应分成两行来写: String* pName; String name;
1.9.引用变量和返回引用函数的命名前缀(适用于C++)
2 引用必须用 'r'作前缀修饰。 例如: class Test { public:
void DoSomething(StatusInfo&rStatus);
StatusInfo& rStatus();
constStatusInfo& Status() const; // 这里返回的是常量引用,所以不符合本规则 private:
StatusInfo& mrStatus; }
1.10. 全局变量的命名前缀(适用于C/C++)
2 全局变量总是以 'g(g_)' 作为前缀。
;.
共分享92篇相关文档