当前位置:   article > 正文

程序设计语言:编程规范与习惯_程序设计规范

程序设计规范

1、编程规范与习惯

编程规范:一个团队、企业给出的内部开发最佳做法的建议、最好方式的推荐和经验总结
目的:使开发人员有据可依、代码易读、易于测试和维护、易于定位错误和变更管理。
在这里插入图片描述

1.1 结构化编程基本原则

  1. 简单结构:尽量使用所用程序语言的基本控制结构,即顺序结构、选择结构和循环结构。
  2. 组合嵌套:复杂结构应该用基本控制结构组合或嵌套实现。
  3. 一致性:语言中没有的控制结构可用一段等价的程序段模拟,但必须保证上下文一致。
  4. 块机制:将程序组织成容易识别的块,每块只有一个入口和一个出口。
  5. GOTO语句:严格控制GOTO语句。
  6. 自顶向下:先考虑总体,厚考虑细节;先考虑全局目标,后考虑局部目标。
  7. 逐步细化:对于复杂问题,进行分解子目标。
  8. 模块化:将子目标分为为小目标,予以结构化实现。

1.2 程序设计风格

1.2.1 基本要求

  • 程序结构清晰且简单易读,单个函数的行数一般不要超过100行。
  • 算法设计应该简单,代码要简洁,避免出现冗余和垃圾程序。
  • 尽量使用标准库函数(类方法)和公共函数(类方法)。
  • 最好使用括号以避免二义性。

1.2.2 可读性要求

  1. 注释
  • 程序头、函数头说明;接口说明;子程序清单,有关数据的说明;模块位置;开发历史等。
  • 主要变量(结构、联合、类或对象);含义的注释。
  • 应保持注释与代码完全一致。
  • 处理过程的每个阶段和典型算法前都有相关注释说明,但是不要对每条语句注释。
1) 源文件头部注释
版权、作者、编写日期和描述。每行不要超过80个字符的宽度。
/*************************************************
Copyright:bupt
Author:
Date:2010-08-25
Description:描述主要实现的功能
**************************************************/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
2) 函数头部注释
功能、输入参数、输出参数、返回值、调用关系(函数、表)等
/*************************************************
Function:       // 函数名称
Description:    // 函数功能、性能等的描述
Calls:          // 被本函数调用的函数清单
Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input:          // 输入参数说明,包括每个参数的作
          // 用、取值说明及参数间关系。
Output:         // 对输出参数的说明。
Return:         // 函数返回值的说明
Others:         // 其它说明
*************************************************/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
3) 数据结构声明的注释(包括数组、结构、类、枚举等)
如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;
对结构中的每个域的注释放在此域的右方。
/* sccp interface with sccp user primitive message name */
enum SCCP_USER_PRIMITIVE
{
  N_UNITDATA_IND, /* sccp notify sccp user unit data come */
  N_NOTICE_IND,   /* sccp notify user the No.7 network can not */
                    /* transmission this message */
  N_UNITDATA_REQ, /* sccp user's unit data transmission request*/
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
4) 变量的注释
包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
/* The ErrorCode when SCCP translate */
/* Global Title failure, as follows */      // 变量作用、含义
  • 1
  • 2
  • 3
  • 4
  1. 格式
  • 程序格式清晰。
  • 一行只写一条语句,不要密密麻麻,分不出层次。
  • 显示程序的逻辑结构,利用空格、空行和缩进进行,缩进一般为4个字节。
  • 语句力求简单、清晰,不要片面追求效率而导致程序编写过于紧凑,使语句复杂化。
  • 简单变量的运算速度比带下标的数组运算要快。将数组中标量用简单变量传递出来。
  • 避免采用过于复杂的条件测试,少用含有“否定”运算符的条件语句。
  • 避免使用空的ELSE语句和IF THEN IF语句。
  • 避免使用ELSE GOTO和LESE RETURN结构。
  • 避免过多的循环嵌套和条件嵌套。
  • 数据结构要有利于程序的简化。
  • 模块功能尽可能单一化,模块间的耦合能够清晰可见。利用信息隐藏确保每一个模块的独立性。
  • 对递归定义的数据结构尽量使用递归过程。
  • 尽量不要修补结构差的程序,而应重新设计和编码。
  • 对太大的程序,要分块编写、测试,后再集成。
  1. 数据说明(申明)
  • 数据说明的先后次序规范化:简单变量类型说明、数组说明、公用数据块说明、文件说明。
  • 每个类型说明中可按如下顺序排列:整数型说明、实型量说明、字符量说明、逻辑量说明。
  • 同一条说明语句中可按字母顺序排列。

1.2.3 正确性与容错性要求

  1. 程序首先是正确,其次是考虑优美和效率。
  2. 对所有用户输入,必须进行合法性和有效性检查。
  3. 不要单独进行浮点数的比较。
  4. 所有变量再调用前必须进行初始化。
  5. 改一个错误时可能产生新的错误,因此修改前首先考虑其影响。
  6. 单元测试也是编程的一部分,提交联调测试的程序必须通过单元测试。
  7. 单元测试时,必须针对类里的每一个public方法进行测试,测试其正确的输入,是否得到正确的输出;错误的输入是否有容错处理。

1.2.4 可移植性要求

  1. 应当尽量使用语言的标准部分,避免使用第三方提供的接口,以确保程序不受具体的运行环境影响,和平台无关。
  2. 对数据库的操作,使用符合语言规范的标准接口类型如JDBC,除非程序时运行于特定的环境下,并且有很高的性能优优化方面的要求。
  3. 程序中涉及到数据库定义和操纵语句,尽量使用标准SQL数据类型和SQL语句。

1.2.5 输入和输出要求

  1. 输入输出需尽量方便用户使用,确定基本的输入输出风格,避免涉及不当引起的麻烦。
  2. 对所有输入数据进行检验。
  3. 操作步骤尽可能简单,并保持简单输入格式。
  4. 有些输入应提供缺省值。
  5. 输入一批数据时,需要使用输入结束标志,而不是由用户指定输入数据数目。
  6. 交互操作需要显示提示信息、选择项和取值范围,便于操作。同时在输入数据过程和输出数据结束时,也要在屏幕上给出状态信息。
  7. 按照用户的要求设计输出报表格式。

1.2.6 重用性要求

  1. 可重复使用的、功能相对独立的算法或接口。应该考虑封装封装成公共的控件或类。
  2. 相对固定和独立的程序实现方式和过程,应考虑做成程序模板,增强对程序实现方式的复用。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/989708
推荐阅读
相关标签
  

闽ICP备14008679号