• 结对作业之代码规范


    前言:

    经过老师评论做出修改,相比于之前简略的代码规范,这次花时间专门了解学习了一下其他大公司/开发者的代码规范,规范更完善了一些;

    代码风格:

    • 库的使用:

    尽量不要引用不必要的库,包括不必要的头文件,或引用不必要的程序集。注重细节能够减少生成时间,最小化出错几率,并给读者一个良好的印象。

    • 缩进:

    缩进使用4个空格的方式。

    • 全局变量:

    尽量减少使用全局变量。为了正确的使用全局变量,一般是将他们作为参数传入函数。不要在函数或类内部直接引用全局变量,因为这会引起一个副作用:在调用者不知情的情况下改变了全局变量的状态。这对于静态变量同样适用。如果需要修改全局变量,应该将其作为一个输出参数,或返回其一份全局变量的拷贝。

    • 变量的声明和初始化:

    在最小的,包含该局部变量的作用域块内声明它。一般若语言允许,就仅在使用前声明它们,否则就在作用域块的顶端声明,并一定在声明变量的时候初始化它们,并尽量在声明和初始化或赋值置于同一行代码内。

    • 括号:

    在复杂的条件表达式中,用括号清楚的表示逻辑优先级。

    • 断行与空白的{ }行与分行:

    在定义不同变量或对多个变量进行赋值时不要放在一行上,即多条语句不要放在一行上。程序结构风格使用断行和空白的{ }行,在程序调试时期需要单步执行需要断行,在程序复杂代码量大时空白{ }使结构清晰明了。每行代码限定为80字符宽,当一行装不下内容时,需要进行折行。

    折行规则:

    1. 在分号处折行;
    2.在操作符前折行。操作符包括+,-,*,/,左括号,逗号,”&&”,”||”,问号,冒号,例外的情况是在逗号后折行;
    3.当函数声明、定义、调用或 enum 声明中枚举操作符的参数列表参数较多,不能置于一行,则将每一个列表元素置于单独的一行;
    
    • 注释:

    注释应当作为源代码的补充,而不是直译源代码。注释中应避免重复程序标识符,避免复制别处有的信息(此时可使用一个指向信息的指针)。否则程序中的任何一处改动都可能需要多处进行相应的变动。如果其他地方没有进行所需的注释改动,将会导致误注释:这种结果比根本没有注释还要糟糕。

    1. 它们应当解释不能直接从源代码看出东西;它们不应复制语言的语法或语义。
    2. 它们应当帮助读者掌握背景中的概念、依赖性、特别是复杂的数据代码和算法。
    3. 它们应当突出:与代码或设计标准的不同点、受限特性的使用、以及特殊的“技巧”。

    i : 在每一函数定义代码段前,应该有一段注释,用于说明该函数的函数名,函数功能描述,输入参数描述,输出变量说明,算法描述。例:

    /*
    *--------------------------------------------------------------------------------
    *  Member Name		     	:	成员函数名
    *  Function Description		:	功能描述
    *  Parameter Specification	:	输入参数描述	
    *  Return Specification   	:	返回变量说明 
    *   Algorithm		    	:	算法描述		
    *   Addtion  			    :   附加说明,如调用说明,前置条件,后置条件。
    *--------------------------------------------------------------------------------
    */
    

    ii : 关键修改的地方应加注释说明。

    /*
    * Revision                  :  修改版本
    * Revision Date and Time    : 修改日期与时间
    * Mender                    : 修改人
    * Revision Description      : 修改内容简要描述
    */
    
    • 命名规则:

    1. 对“匈牙利命名法”合理的简化,变量名尽量使得程序员一眼便能看出其含义,明显易懂的变量类型可以不需要在其中体现;
    2. 采取简便缩写格式,对于可以简写表示的变量不需要过多描述;
    3. 避免不必要的修饰词,如果删减修饰词程序不会变的难懂,那么便可删减;
    4. 使用下划线分隔变量名中的作用域标注和变量的语义;比如Word_Count;
      • i : 所有的类型/类/函数名都用Pascal形式:所 有单词的第一个字母都大写;

      • ii : 所有变量使用Camel形式,第一个单词全部小写,随后单词随Pascal形式;

      • iii : 常量全用大写的字母,用下划线分割单词。

      • iv : 静态变量加前缀s_(表示static)。

      • v : 如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

    示例代码:

    class Node; // 类名
    
    class LeafNode; // 类名
    
    void Draw(void); // 函数名
    
    void SetValue(int value); // 函数名
    
    BOOL flag;
    
    int drawMode;
    
    const int MAX = 100;
    
    const int MAX_LENGTH = 100;
    
    void Init(…)
    
    {
    
    static int s_initValue; // 静态变量
    
    …
    
    }
    
    int g_howManyPeople; // 全局变量
    
    int g_howMuchMoney; // 全局变量
    

    参考文章:

    C/C++编程规范

    微软编程规范

    以及中央研究院C++ 编码规范的word文档

  • 相关阅读:
    P1312 [NOIP2011 提高组] Mayan 游戏
    Codeforces Round 736
    CF487E Tourists
    荏苒
    数论
    [NOI2009] 二叉查找树 题解
    元素
    线性基
    杂录
    SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别
  • 原文地址:https://www.cnblogs.com/ffxpy/p/9656749.html
Copyright © 2020-2023  润新知