zoukankan      html  css  js  c++  java
  • C/C++语言代码规范

    1.标识符名称:

    标识符名称包括函数名、常量名、变量名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能 够见名知义,有助于对程序功能的理解。规则如下:

    • 所有宏定义、枚举常数和const常变量,用大写字母命名。 #define ARRAY_SIZE 24
    • 复合词中每个单词的第一个字母大写。也可以在复合词可以用下划线隔开每个词。SeqList locate_seq
    • typedef定义的类型名用大写字母表示。
      typedef int INTEGER;

    • 通常,函数的命名也是以能表达函数的动作意义为原则的,一般是由动词打头,然后跟上表示动作对象的名词,各单词的首学母可以大写。createNulList_seq

    • 循环变量可采用i,j,k等,不受上述规则限制

    • 对结构体内的变量命名,遵循变量的具体含义命名原则

    2.数据和函数说明:

    • 数据说明次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护。说明的先后次序应固定,应按逻辑功能排序,逻辑功能块内建议采用下列顺序:整型说明、实型说明、字符说明、逻辑量说明。
    • 如果设计了一个复杂的数据结构,应当通过注释对其变量的含义、用途进行说明

    3.程序注释:

      程序注释是程序员与日后的程序读者之间通信的重要手段之一,注释分为文件注释、函数注释和功能注释。正规程序的注释应注意:注释行的数量占到整个源程序的1/3到1/2

      文件注释位于整个源程序的最开始部分,注释后空两行开始程序正文。它包括:
        ——程序标题。
        ——目的、功能说明。
        ——文件作者、最后修改日期等说明。

    3.1文件注释:

    例:
    /**************************************************************
    (空一行)
    标题:merglist.c
    功能:归并两个有序表.
    说明:
        归并两个数据元素按非递减有序排列的线性表palist和pblist,求得线性表pclist也具有同样的特性
    当前版本:X.x
    修改信息:2004.08.05 Anni,Initial Version
                  2004.08.20 Tom,Bug xxxx fixed
    **************************来关**********************************/
    (空2行,开始程序正文)        
    

    3.2函数注释: 

      函数注释通常置于每函数或过程的开头部分,它应当给出函数或过程的整体说明,对于理解程序本身具有引导作用。一般包括如下条目:
        ——模块标题。
        ——有关本模块功能和目的的说明。
        ——调用格式
        ——接口说明:包括输入、输出、返回值、异常。
        ——算法。如果模块中采用了一些复杂的算法。

      函数注释示例:

    (注释开头与上一函数最后一行间隔两行)
    /***************************************************************
    标题:delete_seq
    功能:在palist所指顺序表中删除下标为p的元素
    格式:int delete_seq(PSeqList palist,intp)
    输入:palist所指顺序表,下标p
    输出:palist所指顺序表
    返回值:TRUE正常,FALSE错误
    ***************************************************************/
    (注释后直接开始程序正文,不空行。)
    

    3.3功能性注释  

      功能性注释嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。而不要解释下面怎么做,因为解释怎么做常常与程序本身是重复的。
    例:

    /*把 amount 加到total中*/
    total=amount +total;

      这样的注释仅仅是重复了下面的程序,对于理解它的工作并没有什么作用。而下面的注释,有助于读者理解。

    /*将每月的销售额amount加到年销售额total中*/
    材total=amount +total;

      

    4.语句结构

     为保证语句结构的清晰和程序的可读性,在编写软件程序时应注意以下几个方面的问题:

    • 在一行内只写一条语句,并采用空格、空行和移行保证清楚的视觉效果。
    • 每一个嵌套的函数块,使用一个TAB缩进(可以设定为4个空格),大括号必须放在条件语句的下一行,单独成一行,便于匹对:
    • 文件之中不得存在无规则的空行,比如说连续十个空行。

      一般来讲函数与函数之间的空行为2-3行;在函数体内部,在逻辑上独立的两个函数块可适当空行,一般为1-2行。

    • 程序编写首先应考虑清晰性,不要刻意追求技巧性而使得程序难以理解。
    • 每行长度尽量避免超过屏幕宽度,应不超过80个字符。
    • 除非对效率有特殊要求,编写程序要作到清晰第一,效率第二。
    • 尽可能使用函数库。
    • 尽量用公共过程或子程序去代替重复的功能代码段。
    • 使用括号清晰地表达算术表达式和逻辑表达式的运算顺序。如将x=a*b/c*d 写成x=(a*b/c)*d可避免阅读者误解为x=(a*b)/(c*d)。
    • 避免采用过于复杂的条件测试。
    • 避免过多的循环嵌套和条件嵌套。
    • 建议不要使用*=,A=,/=等运算符。
    • 一个函数不要超过200行。一个文件应避免超过2000行。
    • 尽量避免使用go to语句。
    • 不鼓励采用?:操作符,如z=(a>b)?a:b;
    • 不要使用空的if else语句。如
      if(mychar >= ‘A’)
      if(mychar <= ‘Z’)
      printf("This is a letter
      ");
      else
      printf(“This is not a letter
      ");
      

      else到底是否定哪个if容易引起误解。可通过加{}避免误解。  

    • 尽量减少使用“否定”条件的条件语句。如:
      把 if(!((mychar<'0’)||(mychar>'9)))
      改为if((mychar>='0)&&(mychar<='9))

     

     

  • 相关阅读:
    leetcode Super Ugly Number
    leetcode Find Median from Data Stream
    leetcode Remove Invalid Parentheses
    leetcode Range Sum Query
    leetcode Range Sum Query
    leetcode Minimum Height Trees
    hdu 3836 Equivalent Sets
    hdu 1269 迷宫城堡
    hud 2586 How far away ?
    poj 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/10448957.html
Copyright © 2011-2022 走看看