程序的书写规则(程序的编码规范)

发布者:才富五车330最新更新时间:2016-09-01 来源: eefocus关键字:程序  书写规则  编码规范 手机看文章 扫描二维码
随时随地手机看文章
随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多, 
对于软件开发人员来说,除了保证程序运行的正确性和提高代码的 运行效率之外,规 
范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷 
入“代码泥潭”中无法自拔。开发一个 成熟的软件产品,除了有详细丰富的开发文档 
之外,必须在编写代码的时候就有条不紊,细致严谨。 
  以下的编码规范包含了程序排版、注 释、命名、可读性、变量、程序效率、质量 
保证、代码编译、代码测试和版本控制等注意事项。 
  一、排版: 
  1.关键词和 操作符之间加适当的空格。 
  2.相对独立的程序块与块之间加空行 
  3.较长的语句、表达式等要分成多行书写。 
  4. 划分出的新行要进行适应的缩进,使排版整齐,语句可读。 
  5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 
   6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。 
  7.若函数或过程中的参数较长,则要进行适当的划分。 
   8.不允许把多个短语句写在一行中,即一行只写一条语句。 
  9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。 
  10.C/C++语言是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和 
   ‘}’应各独占一行并且位于同一 列,同时与引用它们的语句左对齐。在函数体 
    的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、 
     switch、case语句中的程序都要采用如上的缩进方式。

  二、注释 
  1.注释要简单明了。 
  2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。 
   3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止 
   注释二义性。保持注释与其描述的代码相邻,即注释的就近 原则。 
  4.对代码的注释应放在其上方相邻位置,不可放在下面。 
  5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对 结构中的每个域 
   的注释应放在此域的右方;同一结构中不同域的注释要对齐。 
  6.变量、常量的注释应放在其上方相邻位置或右 方。 
  7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它 
   以及存取时注意事项等的说明。 
   8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成 
   日期;模块功能描述(如功能、主要算法、内部各部分之间 的关系、该文件与其 
   它文件关系等);主要函数或过程清单及本文件历史修改记录等。 
  9.在每个函数或过程的前面要有必要的注 释信息,包括:函数或过程名称;功能描 
   述;输入、输出及返回值说明;调用关系及被调用关系说明等。

  三、命名 
  1.较短的单词可通过去掉“元音”形成缩写; 
  2.较长的单词可取单词的头几发符的优先级,并用括号明确表 达式的操作顺序,避 
   免使用默认优先级。 
  3.使用匈牙利表示法

  四、可读性 
  1.避免使用不易理解的数字,用有意义的标识来替代。 
  2.不要使用难懂的技巧性很高的语句。 
   3.源程序中关系较为紧密的代码应尽可能相邻。

  五、变量 
  1.去掉没必要的公共变量。 
  2.构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公 共 
   变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。 
  3.仔细定义并明确公共变量的含义、作用、取值范围 及公共变量间的关系。 
  4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。 
  5.当向公共变量传递数 据时,要十分小心,防止赋与不合理的值或越界等现象发生。 
  6.防止局部变量与公共变量同名。 
  7.仔细设计结构中元素的布局与 排列顺序,使结构容易理解、节省占用空间,并减 
   少引起误用现象。 
  8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为 某些未来可能的应用保 
   留余地(如预留一些空间等)。 
  9.留心具体语言及编译器处理不同数据类型的原则及有关细节。 
   10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。 
  11.编程时,要注意数据类型的强制转换。

  六、函数、过程 
  1.函数的规模尽量限制在200行以内。 
  2.一个函数最好仅完成一件功能。 
  3.为简 单功能编写函数。 
  4.函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。 
  5.尽量不要编写依赖于其他 函数内部实现的函数。 
  6.避免设计多参数函数,不使用的参数从接口中去掉。 
  7.用注释详细说明每个参数的作用、取值范围及参 数间的关系。 
  8.检查函数所有参数输入的有效性。 
  9.检查函数所有非参数输入的有效性,如数据文件、公共变量等。 
   10.函数名应准确描述函数的功能。 
  11.避免使用无意义或含义不清的动词为函数命名 
  12.函数的返回值要清楚、明了,让 使用者不容易忽视错误情况。 
  13.明确函数功能,精确(而不是近似)地实现函数设计。 
  14.减少函数本身或函数间的递归调 用。 
  15.编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作) 
    等手段对其加以保护。

  七、可测性 
  1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调 
  测开关及相应测试代码如 打印函数等。 
  2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时 
  仔细分析并优化测试用例,以提 高测试效率。

  八、程序效率 
  1.编程时要经常注意代码的效率。 
  2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提 高代码效率。 
  3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影 
   响。 
  4.编程 时,要随时留心代码效率;优化代码时,要考虑周全。 
  5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。 
  6.通 过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。 
  7.在多重循环中,应将最忙的循环放在最内层。 
   8.尽量减少循环嵌套层次。 
  9.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。 
  10.尽量用乘法或其它方 法代替除法,特别是浮点运算中的除法。

  九、质量保证 
  1.在软件设计过程中构筑软件质量。 
  代码质量保证优先原则 
  (1)正确性,指程序要实现 设计要求的功能。 
  (2)稳定性、安全性,指程序稳定、可靠、安全。 
  (3)可测试性,指程序要具有良好的可测试性。 
   (4)规范/可读性,指程序书写风格、命名规则等要符合规范。 
  (5)全局效率,指软件系统的整体效率。 
  (6)局部效率,指 某个模块/子模块/函数的本身效率。 
  (7)个人表达方式/个人方便性,指个人编程习惯。 
  2.只引用属于自己的存贮空间。 
   3.防止引用已经释放的内存空间。 
  4.过程/函数中分配的内存,在过程/函数退出之前要释放。 
  5.过程/函数中申请的(为 打开文件而使用的)文件句柄,在过程/函数退出前要关
闭。 
  6.防止内存操作越界。 
  7.时刻注意表达式是否会上溢、下 溢。 
  8.认真处理程序所能遇到的各种出错情况。 
  9.系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引 用。 
  10.系统运行之初,要对加载到系统中的数据进行一致性检查。 
  11.严禁随意更改其它模块或系统的有关设置和配置。 
   12.不能随意改变与其它模块的接口。 
  13.充分了解系统的接口之后,再使用系统提供的功能。 
  14.要时刻注意易混淆的操 作符。当编完程序后,应从头至尾检查一遍这些操作符。 
  15.不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句。 
   16.建议:使用第三方提供的软件开发工具包或控件时,要注意以下几点: 
  (1)充分了解应用接口、使用环境及使用时注意事项。 
   (2)不能过分相信其正确性。 
  (3)除非必要,不要使用不熟悉的第三方工具包与控件。

  十、代码编译 
  1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成 
   代码丢失。 
   2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。 
  3.合理地设计软件系统目录,方便开发人员使用。 
  4.打 开编译器的所有告警开关对程序进行编译。 
  5.在同一项目组或产品组中,要统一编译开关选项。 
  6.使用工具软件(如 Visual SourceSafe)对代码版本进行维护。

  十一、代码测试、维护 
  1.单元测试要求至少达到语句覆盖。 
  2.单元测试开始要跟踪每一条语句,并观察数据流及变量 的变化。 
  3.清理、整理或优化后的代码要经过审查及测试。 
  4.代码版本升级要经过严格测试。
关键字:程序  书写规则  编码规范 引用地址:程序的书写规则(程序的编码规范)

上一篇:用PWM控制LED的亮度的程序
下一篇:STC系列单片机的PCA/PWM原理

推荐阅读最新更新时间:2024-03-16 15:07

单片机C语言程序设计:单只数码管循环显示 0~9
/* 名称:单只数码管循环显示 0~9 说明:主程序中的循环语句反复将 0~9 的段码送至 P0 口,使数字 0~9 循环显示 */ #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t 120;t++); }
[单片机]
单片机C语言<font color='red'>程序</font>设计:单只数码管循环显示 0~9
大神教你快速上手:标准80C51单片机模拟I2C总线的主机程序
I2C总线协议程序 在做程序是我在网上找的是周立功的程序,感觉还不错顺便转载;在使用的过程中一定要注意时序、时间的问题。 “i2c.h文件” //I2C总线综合发送函数,向从机发送多个字节的数据 I2C读写EEPROM流程图 bit I2C_Puts( unsigned char SlaveAddr, unsigned int SubAddr, unsigned char SubMod, char *dat, unsigned int Size ); //I2C总线综合接收函数,从从机接收多个字节的数据 bit I2C_Gets ( unsigned char SlaveAddr, unsigned int SubAddr
[单片机]
大神教你快速上手:标准80C51单片机模拟I2C总线的主机<font color='red'>程序</font>
大同为华映担保:表明华映完全符合法规程序
集微网消息,去年底,面板厂华映由于不堪连年亏损,负债高企,向法院申请重整。 不久前,华映还惊传跳票,并确认是与台湾银行签有短期借款额度并提供10亿元新台币(单位下同)的本票保证,据了解,该笔10亿元的本票,是台湾银行为自贷债权进行的保全措施,台湾银行主管说,“提示本票后发生退票,我们就可以取得执行名义。” 大同公司昨(14)日晚间回应,大同担保华映完全符合法规程序;大同担保品有华映百慕达股权及其机器、设备。大同强调,华映申请重整中,如何促其还款,尚待相关法律程序确定后方可进行。 资深会计师巫鑫针对近日华映跳票10亿元事件指出,因大同董事会对华映违法担保,导致大同20亿元损失。大同今晚再度重申,大同担保华映完全符合法规程
[手机便携]
基于MDK编译器 STM32与12864液晶显示程序 和电路连接
里附上的是主程序部分和电路连接 这里用的12864液晶是5v的,电路链接部分 RS PE2 RW PE4 EN PE6 15口PSB串并 PE3 #include stm32f10x.h GPIO_InitTypeDef GPIO_InitStructure; #define RS_SET GPIO_SetBits(GPIOE, GPIO_Pin_2) #define RS_CLR GPIO_ResetBits(GPIOE, GPIO_Pin_2) #define RW_SET GPIO_SetBits(GPIOE, GPIO_Pin_4) #define RW_CLR GPIO_Re
[单片机]
Tiny210驱动之NAND_FLASH驱动程序
tiny_nand.c驱动源码: #include "linux/module.h" #include "linux/types.h" #include "linux/init.h" #include "linux/kernel.h" #include "linux/string.h" #include "linux/ioport.h" #include "linux/platform_device.h" #include "linux/delay.h" #include "linux/err.h" #include "linux/slab.h" #include "linux/clk.h" #include "linux/cpu
[单片机]
基于51单片机设计的DS1302时钟程序
/****************************************************** #include reg52.h DS1302时钟程序 *******************************************************/ sbit ACC_0 = ACC^0; sbit ACC_1 = ACC^1; sbit ACC_2 = ACC^2; sbit ACC_3 = ACC^3; sbit ACC_4 = ACC^4; sbit ACC_5 = ACC^5; sbit ACC_6 = ACC^6; sbit ACC_7 = ACC^7; //************
[单片机]
Proteus8.8版本+ STM32F103驱动LCD1602显示程序+按键+ADC+串口
STM32F103仿真驱动点亮LCD1602 一、开发环境介绍 proteus 8.8 版本+ STM32CubeMX 4.18.0 程序基于keil集成开发环境编写,基于ST官方的HAL库。 STM32CubeMX pack版本 STM32CubeMX的版本 二、项目功能介绍 该项目程序中实现了 1、程序实现了LCD1602的点亮显示 2、程序中实现了STM32的AD采样 3、程序中实现了串口通信 4、程序中实现了按键控制操作 通过滑动变阻器加放大器改变输入值。后边加上lcd1602,初始化显示“光节点检测系统” 然后加个按键按下开始 显示“光功率值:(多少)dbm 这里的范围就0-100 通过调节前边电位器每次只变化一
[单片机]
Proteus8.8版本+ STM32F103驱动LCD1602显示<font color='red'>程序</font>+按键+ADC+串口
PWM控制亮度的流水灯c51程序
#include Reg52.h //--重定义函数变量--// #define uchar unsigned char #define uint unsigned int #define ulong unsigned long /* 定义常量 */ #define FOSC 12000000L //主时钟 #define T50us (65536-FOSC/12/1000000*50) //12T 模式下,50us 时间的计算方法 #define T10ms (65536-FOSC/12/1000*10) //12T 模式下,10ms 时间的计算方法 //--定义全局变量--// uc
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved