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))

     

     

  • 相关阅读:
    Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
    Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
    Java 集合系列02之 Collection架构
    Java 集合系列01之 总体框架
    [转载] 散列表(Hash Table) 从理论到实用(下)
    [转载] 散列表(Hash Table)从理论到实用(中)
    [转载] 散列表(Hash Table)从理论到实用(上)
    Android 之窗口小部件高级篇--App Widget 之 RemoteViews
    Android控件之GridView
    红黑树(一)之 原理和算法详细介绍
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/10448957.html
Copyright © 2011-2022 走看看