个人代码规范

个人代码规范

为方便以后小组编程,以下代码规范为与有意愿同组同学协商调整后的规范。

  • 缩进

    • 缩进风格:程序块要采用缩进编写,缩进的空格数一般为4个。
    if(i<0) //我们使用空格缩进. 不要在代码中使用制表符. 设置编辑器将制表符转为空格.
    {
    	if(i<-1)
    	{
        	  a++;
    	}
    	else{}
    }
    
  • 变量命名规则

    • 普通变量命名:全部使用小写,单词间使用_隔开
    string table_name;  // 用下划线.
    
    • 类数据成员:全部使用小写,单词间使用_隔开,末尾以_结尾
    class TableInfo 
    {
          
          
      ...
       private:
         string table_name_;  // 后加下划线.
         static Pool<TableInfo>* pool_; 
    };
    
    • 结构体变量:结构体数据成员和普通变量一样, 但不用像类那样接下划线
    struct UrlTableProperties
    {
          
          
        string name;
        int num_entries;
        static Pool<UrlTableProperties>* pool;
    };
    
  • 每行最多字符数

    • 每一行代码字符数不超过 80.
    • 包含长路径的 #include 语句可以超出80列.
  • 函数最大行数

    • 函数代码函数控制在80行以内
    • 尽量紧凑。一个函数只赋予一个职责
    • 不要自我重复。优先使用命名函数,而不要让相似的代码片段重复出现
  • 函数、类型命名

    • 常规函数使用大小写混合, 首字母大写,单词间不用隔开
    • 如:MyExcitingFunction(), MyExcitingMethod()
    • 类型名称的每个单词首字母均大写, 单词间不用隔开
    class UrlTable {
          
           ...
    class UrlTableTester {
          
           ...
    struct UrlTableProperties {
          
           ...
    
    // 类型定义
    typedef hash_map<UrlTableProperties *, string> PropertiesMap;
    
    // using 别名
    using PropertiesMap = hash_map<UrlTableProperties *, string>;
    
    // 枚举
    enum UrlTableErrors {
          
           ...
    
  • 常量命名

    • 命名时以k开头,单词首字母大写,不用分隔
    • 如:const int kDaysInAWeek = 7;
  • 空行规则

    • 两个函数定义之间的空行不要超过 2 行,其余地方最好不要空行
    void test1()
    {
          
          
    
    }
    
    void test2()
    {
          
          
        
    }
    
  • 注释规则

    • 统一采用//注释,//后空一格开始注释,注释位于上方
    • 在每一个文件开头加入说明或公告
    • 每个类的定义都要附带一份注释, 描述类的功能和用法, 除非它的功能相当明显
    // Iterates over the contents of a GargantuanTable.
    // Example:
    //    GargantuanTableIterator* iter = table->NewIterator();
    //    for (iter->Seek("foo"); !iter->done(); iter->Next()) {
          
          
    //      process(iter->key(), iter->value());
    //    }
    //    delete iter;
    class GargantuanTableIterator {
          
          
      ...
    };
    
    • 函数声明处的注释描述函数功能; 定义处的注释描述函数实现.
    • 类数据成员 (也叫实例变量或成员变量) 都应该用注释说明用途.
    • 全局变量也要注释说明含义及用途, 以及作为全局变量的原因.
    • 对于代码中巧妙的, 晦涩的, 有趣的, 重要的地方加以注释
    • 当需要要在行尾加入注释时. 在行尾空两格进行注释
  • 操作符前后空格

    // 赋值运算符前后总是有空格.
    x = 0;
    
    // 其它二元操作符也前后恒有空格.
    // 圆括号内部没有紧邻空格.
    v = w * x + y / z;
    v = w * (x + z);
    
    // 在参数和一元操作符之间不加空格.
    x = -5;
    ++x;
    if (x && !y)
      ...
    
  • 其他规则

    扫描二维码关注公众号,回复: 13366515 查看本文章
    • 使用描述性的命名,少用缩写
    • 文件名要全部小写, 可以包含下划线 如:code_test.cpp
    • 类的声明顺序应该为:以 public: 开始, 后跟 protected:, 最后是 private:. 省略空部分.
    • 多参数情况下,;后应空一格

猜你喜欢

转载自blog.csdn.net/ShakingSH/article/details/120387665
今日推荐