zoukankan      html  css  js  c++  java
  • 结对作业之代码规范

    前言:

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

    代码风格:

    • 库的使用:

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

    • 缩进:

    缩进使用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文档

  • 相关阅读:
    聊聊WS-Federation
    用双十一的故事串起碎片的网络协议(上)
    责任链模式的使用-Netty ChannelPipeline和Mina IoFilterChain分析
    最小化局部边际的合并聚类算法(中篇)
    最小化局部边际的合并聚类算法(上篇)
    UVaLive 7371 Triangle (水题,判矩形)
    UVaLive 7372 Excellence (水题,贪心)
    POJ 3312 Mahershalalhashbaz, Nebuchadnezzar, and Billy Bob Benjamin Go to the Regionals (水题,贪心)
    UVa 1252 Twenty Questions (状压DP+记忆化搜索)
    UVa 10817 Headmaster's Headache (状压DP+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/heihuifei/p/9656750.html
Copyright © 2011-2022 走看看