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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。