单片机软件编程规范
C51编程规范--很好的规范

单片机C51编程规范1单片机C51编程规范-前言为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。
2 单片机C51编程规范-范围本标准规定了程序设计人员进行程序设计时必须遵循的规范。
本规范主要针对C51编程语言和kei§编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。
3 单片机C51编程规范-总则格式清晰注释简明扼要命名规范易懂函数模块化程序易读易维护功能准确实现代码空间效率和时间效率高适度的可扩展性4 单片机C51编程规范-数据类型定义编程时统一采用下述新类型名的方式定义数据类型。
建立一个datatype.h文件,在该文件中进行如下定义:typedef bit BOO§; // 位变量//typedef unsigned char INT8U; // 无符号8位整型变量//typedef signed char INT8S; // 有符号8位整型变量//typedef unsigned int INT16U; // 无符号16位整型变量//typedef signed int INT16S; // 有符号16位整型变量//typedef unsigned §ong INT32U; // 无符号32位整型变量//typedef signed §ong INT32S; // 有符号32位整型变量//typedef f§oat FP32; // 单精度浮点数(32位长度) //typedef doub§e FP64; // 双精度浮点数(64位长度) //5 单片机C51编程规范-标识符命名5.1 命名基本原则§命名要清晰明了,有明确含义,使用完整单词或约定俗成的缩写。
通常,较短的单词可通过去掉元音字母形成缩写;较长的单词可取单词的头几个字母形成缩写。
即"见名知意"。
K150单片机编程器使用说明

TJ- K150 USB PIC单片机编程器用户操作手册版本号:Ver_1.0产品简介K150新版本是我们最新推出的一款低价位高性能的PIC编程器。
此编程器在前期K150硬件电路和软件固件基础上做了大量的优化和改进。
其硬件改进主要有板载供电、升压以及USB通讯电路。
软件升级采用最新固件,尽可能支持兼容更多的PIC系列单片机芯片,除此之外汉化了应用程序,使整个编程器系统运行更稳定,体积更小巧,更适合生产、研发、工程现场以及PIC单片机学习使用。
产品主要特点:采用单USB线供电和数据传输,无需外接电源;支持大部分流行PIC芯片的烧写、读出、加密等功能;高速USB通信方式,烧写速度超快,烧写;全自动烧写校验,使数据下载烧录更可靠;全面的信息提示,让用户清楚了解工作状态;配备板载40pin烧写座,能直接烧写、读出和加密8pin-40pin的DIP芯片; 对于8pin-40 pin以外的芯片可通过板载ICSP接口在线下载;软件兼容Windows98和Windows2000/NT,Windows XP,Windows7等操作系统; 烧写软件与K149A/B/C/D版本相同,添加了汉化版和英文原版,方便操作; 编程器采用贴片元件生产工艺,SMT批量生产使产品质量更稳定,更可靠充分考虑PIC系列芯片的更新,编程器上保留主控芯片的DIP封装并配座,方便用户今后升级使用。
USB_Driver驱动安装Windows95、Windows98、WindowsNT4.0、Windows2000、Windowsxp、win7系统驱动安装方法1)电脑系统配置最低要求:安装 USB_Driver驱动程序,必须满足一定的硬件和软件要求,才能确保编译器以及其它程序功能正常使用,具体要求如下:■ Pentium、Pentium-II或兼容处理器的 PC;■ Windows95、Windows98、WindowsNT4.0、 Windows2000、Windowsxp、Win7;■至少 16MRAM;■至少 20MB硬盘。
(完整版)单片机软件编程规范

1 编辑器 (3)2 程序文件的结构 (3)2.1 说明 (3)2.2 编译宏定义 (4)2.3 包含文件 (4)2.4 用户数据类型定义 (4)2.5 管脚定义 (5)2.6 常量 (5)2.7 变量 (5)2.8 正文 (6)2.8.1 正文顺序[推荐] (6)2.8.2 正文内容 (6)2.9 长的常量数组 (6)3 命名 (7)3.1 常量、编译宏命名 (7)3.2 变量命名 (7)3.3 函数命名 (8)4 程序的版式 (9)4.1 缩进:统一使用编辑器的TAB键进行缩进,同时设定其缩进量为系统默认 (9)4.2 空行:相对独立的程序块之间、变量说明之后必须加空行 (10)4.3 代码行 (11)4.3.1 一行代码只做一件事情 (11)4.3.2 if、for、while、do 等语句自占一行 (11)4.3.3 程序块的分界符独占一行 (12)4.3.4 多运算符的代码行,不使用默认优先级 (13)4.3.5 不要使用难懂的技巧性很高的语句 (13)4.4 空格 (14)4.4.1 必要时留空格,使代码更清晰[推荐] (14)4.4.2 二元操作符前后留空格 (14)4.4.3 一元操作符前后不留空格 (14)4.5 长行拆分 (15)4.5.1 较长的语句(>80字符)要分成多行书写 (15)4.5.2 循环、判断等语句要在低优先级操作符处划分新行 (16)4.5.3 函数或过程中的参数较长,则要进行适当的划分 (16)5 全局变量定义时初始化 (16)6 注释 (17)6.1 必须加注释的位置[推荐] (17)6.2 注释应适量且准确[推荐] (17)6.3 函数接口的注释格式 (17)6.4 变量的注释格式[推荐] (18)6.5 注释与所描述内容进行同样的缩排 (19)6.6 将注释与其上面的代码用空行隔开 (20)6.7 程序块结束行加注释[推荐] (20)7 EEPROM数据保护 (21)8 程序失效复位处理[推荐] (21)9 检查 (21)9.1 数组下标检查 (21)9.2 指针检查 (22)9.3 易混淆操作符检查 (22)9.4 右值变量检查 (22)9.5 差1错误检查 (22)9.6 变量溢出检查 (23)9.7 类型转换检查 (23)1编辑器程序统一使用VC的编辑器。
单片机程序设计编程规范

单片机程序设计编程规范1. 概述本文将介绍单片机程序设计编程过程中应遵循的一些规范。
这些规范旨在提高程序的可读性、可维护性和可重用性,帮助开发人员编写出高质量的单片机程序。
2. 代码布局2.1 源文件结构每个源文件应包含程序的一个完整模块。
源文件以 `.c` 扩展名结尾。
源文件应包含适当的注释,以说明文件的目的和模块。
2.2 函数布局每个函数应尽可能短小,只完成一项具体的功能。
函数应使用有意义的名称,具有描述性。
函数应尽量避免超过 30 行的代码,如果超过应考虑是否需要进行函数分割。
3. 变量命名规范3.1 命名风格变量名应使用小写字母和下划线的组合,如 `my_variable`。
常量应使用全大写字母和下划线的组合,如 `MY_CONSTANT`。
3.2 变量名长度变量名应该具有描述性,尽量避免使用过于简单或过于复杂的变量名。
变量名长度应控制在 20 个字符以内,以保证可读性。
4. 注释规范4.1 文件注释每个源文件应包含文件注释,用于说明文件的目的和模块。
4.2 函数注释每个函数应包含函数注释,用于说明函数的功能、参数和返回值。
4.3 行内注释行内注释应用于解释代码的特定部分,帮助阅读者理解代码的意图。
5. 常量定义规范常量定义应尽量避免使用魔术数,应该使用有意义的常量名来代替。
6. 编码风格使用正确的缩进和对齐方式,以提高代码的可读性。
使用适当的空格来增强代码的可读性,但避免过多的空格导致代码冗长。
使用适当的命名风格和约定,以提高代码的可读性。
7. 错误处理每个函数应该有清晰的错误处理机制,包括返回值、错误码和异常处理等。
错误消息应清晰、明确,并有助于定位错误。
8. 代码复用尽量避免重复的代码,使用函数和模块的方式来实现代码复用。
开发人员应鼓励制定和使用通用的接口、库和模块,以提高代码复用性。
9. 版本管理定期对代码进行版本管理,并使用版本控制工具来管理代码的修改和更新。
10.本文介绍了单片机程序设计编程规范的一些基本原则。
C语言编程规范

C语言编程规范1. 基本要求1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。
1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。
1.3 尽量使用标准库函数和公共函数。
1.4 不要随意定义全局变量,尽量使用局部变量。
1.5 使用括号以避免二义性。
2.可读性要求2.1 可读性第一,效率第二。
2.2 保持注释与代码完全一致。
2.3 每个源程序文件,都有文件头说明,说明规格见规范。
2.4 每个函数,都有函数头说明,说明规格见规范。
2.5 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。
2.7 常量定义(DEFINE)有相应说明。
2.8 处理过程的每个阶段都有相关注释说明。
2.9 在典型算法前都有注释。
2.10 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 6个字节。
2.11 循环、分支层次不要超过五层。
2.12 注释可以与语句在同一行,也可以在上行。
2.13 空行和空白字符也是一种特殊注释。
2.14 一目了然的语句不加注释。
2.15 注释的作用范围可以为:定义、引用、条件分支以及一段代码。
2.16 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 到 1/3 。
3. 结构化要求3.1 禁止出现两条等价的支路。
3.2 禁止GOTO语句。
3.3 用 IF 语句来强调只执行两组语句中的一组。
禁止 ELSE GOTO 和 ELSE RETURN。
3.4 用 CASE 实现多路分支。
3.5 避免从循环引出多个出口。
3.6 函数只有一个出口。
3.7 不使用条件赋值语句。
3.8 避免不必要的分支。
3.9 不要轻易用条件分支去替换逻辑表达式。
4. 正确性与容错性要求4.1 程序首先是正确,其次是优美4.2 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。
4.3 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。
《单片机开发实训》课程标准

《单片机开发实训》课程标准一、课程名称单片机开发实训二、内容简介《单片机开发实训》课程是一门实践课程。
本课程通过设定具有综合性的单片机控制项目,让学生根据具体设计要求进行硬件搭建,程序编写。
通过整个项目的初步设计到实现,学生能够综合掌握微型计算机的基本原理,编程方法,微型计算机的接口技术,简单传感器运用和Keil等常用单片机开发工具的使用方法。
三、课程定位本课程是配合《单片机技术》综合实践环节,与先修课程《单片机技术》的核心知识点相衔接,并将细碎的知识点进行综合运用。
目的是让学生巩固所学知识、加强综合能力、提高软、硬件设计调试方面的能力、启发创新思维的效果。
同时,使学生将相关专业课程知识综合起来,融会贯通,形成系统的概念,从而实现理论与实践相结合。
培养和锻炼学生动手操作和技术创新的能力,为将来进行各种智能化产品的设计开发提供技术准备。
四、课程设计指导思想及原则本课程根据应用电子技术专业的培养目标,以职业能力培养为重点,与企业专家合作进行基于工作过程的课程开发与设计,充分体现职业性、实践性和开放性的要求。
以提升学生综合设计能力为目的,训练学生电子线路的组装调试能力和创新能力,通过查阅资料、选定方案、设计电路、调试软件并下载到芯片运行这一系列训练锻炼学生相关技能,同时培养学生良好的职业道德和社会责任感以及良好的行为习惯和个人品质。
本课程需要在理实一体化教室进行教学。
五、建议课时:该课程实训学时为16学时。
六、课程目标:(一)课程能力目标1、总体目标结合应用电子技术专业人才培养方案,根据课程内容和定位,规范课程教学的基本要求,制定本课程目标。
《单片机开发实训》课程,总目标是使学生具有单片机系统设计的知识与技能、具备较高的职业素质,具有调试单片机系统程序和设计最小单片机系统的能力,能解决程序调试和系统设计中遇到的问题,能胜任单片机产品测试工程师、单片机产品技术支持工程师、单片机软件开发师、单片机硬件开发师和单片机系统设计师等岗位工作。
单片机系统开发单片机软件设计

单片机具有高度的集成度和可靠性,体积小,功耗低,价格便宜,易于编程和 控制,广泛应用于智能仪表、工业控制、智能家居等领域。
单片机系统开发的基本流程
需求分析
根据实际需求,确定系统功能和 性能要求。
系统设计
根据需求分析,进行系统整体设 计和模块划分。
硬件设计
根据系统设计,进行单片机选型 和电路板设计。
智能家居
单片机在智能家居领域中也有 广泛应用,如智能门锁、智能 照明等。
其他领域
除了以上领域外,单片机还广 泛应用于汽车电子、医疗电子
、环保监测等领域。
02
单片机软件设计基础
单片机软件设计语言
C语言
C语言是一种通用的编程语言,广泛 应用于单片机系统开发。它具有高效 、灵活和可移植性强的特点,能够实 现复杂的算法和控制逻辑。
详细描述
单片机系统的稳定性问题主要表现在系统运行过程中出 现的不正常现象,如死机、重启、数据丢失等。这些问 题可能是由于硬件设计不合理、软件缺陷、电源波动等 原因引起的。为了解决稳定性问题,可以从以下几个方 面入手:首先,合理设计硬件电路,保证电源的稳定性 和抗干扰能力;其次,优化软件算法,减少死循环和资 源竞争;最后,加强系统监控和报警机制,及时发现和 排除故障。
THANKS
感谢观看
单片机系统的可维护性问题
总结词
可维护性是单片机系统开发中的重要考量,直接关系 到系统的长期稳定性和成本。
详细描述
单片机系统的可维护性问题主要表现在系统升级、故 障排查和日常维护等方面。为了解决可维护性问题, 可以从以下几个方面入手:首先,采用模块化设计方 法,将系统划分为多个独立的功能模块,便于升级和 维护;其次,加强系统的日志记录和错误诊断功能, 快速定位和解决问题;最后,建立完善的文档和代码 注释体系,方便后续开发和维护人员理解和使用。
单片机程序设计编程规范

单片机程序设计编程规范单片机程序设计编程规范1.文件结构与命名规范1.1 源码文件- 所有源码文件统一使用英文小写字母命名。
- 文件名应简洁明了,能够清晰表达文件的功能。
- 文件名中可以使用下划线 (_) 连接多个单词。
1.2 头文件- 头文件名与源码文件名相同,但使用大写字母命名。
- 头文件应包含必要的宏定义、类型定义、函数声明等。
1.3 项目结构- 源码文件应按功能模块进行组织和管理,每个模块应放在独立的文件夹中。
- 在项目的根目录下添加一个README文件,对项目进行简要说明。
2.编码规范2.1 缩进与空格- 使用4个空格进行缩进,不使用Tab字符。
- 在操作符前后添加空格,增加可读性。
2.2 函数命名- 函数名使用小写字母命名,单词之间使用下划线 (_) 连接。
- 函数名应能够清晰表达函数的功能。
2.3 变量命名- 变量名使用小写字母命名,单词之间使用下划线 (_) 连接。
- 变量名应简洁明了,能够清晰表达变量的用途和含义。
- 全局变量命名应以g_开头。
2.4 常量命名- 常量名使用全大写字母命名,单词之间使用下划线(_) 连接。
2.5 注释规范- 使用注释来解释代码的意图、功能和实现细节。
- 在关键代码处添加注释,并保持注释与代码的同步更新。
- 注释应写在被注释代码的上方,并使用// 或 / /注释符号。
3.函数设计3.1 函数长度- 函数应尽量保持简短,避免超过一页纸的长度。
- 如果函数过长,应考虑将其拆分为多个较小的函数。
3.2 函数参数- 函数参数应尽量少,并且要考虑参数的顺序和类型。
- 不要在函数参数中使用全局变量,尽量使用局部变量。
3.3 函数返回值- 函数的返回值应具有明确的含义,并清晰地传达函数的执行结果。
4.异常处理与错误消息4.1 异常处理- 对可能发生异常的代码块进行适当的异常处理。
- 使用try-catch块捕获异常,并进行相应的处理或记录。
4.2 错误消息- 提供清晰、准确的错误消息,以便于调试和修复问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 编辑器 (3)2 程序文件的结构 (3)2.1 说明 (3)2.2 编译宏定义 (4)2.3 包含文件 (4)2.4 用户数据类型定义 (4)2.5 管脚定义 (5)2.6 常量 (5)2.7 变量 (5)2.8 正文 (6)2.8.1 正文顺序[推荐] (6)2.8.2 正文内容 (6)2.9 长的常量数组 (6)3 命名 (7)3.1 常量、编译宏命名 (7)3.2 变量命名 (7)3.3 函数命名 (8)4 程序的版式 (9)4.1 缩进:统一使用编辑器的TAB键进行缩进,同时设定其缩进量为系统默认 (9)4.2 空行:相对独立的程序块之间、变量说明之后必须加空行 (10)4.3 代码行 (11)4.3.1 一行代码只做一件事情 (11)4.3.2 if、for、while、do 等语句自占一行 (11)4.3.3 程序块的分界符独占一行 (12)4.3.4 多运算符的代码行,不使用默认优先级 (13)4.3.5 不要使用难懂的技巧性很高的语句 (13)4.4 空格 (14)4.4.1 必要时留空格,使代码更清晰[推荐] (14)4.4.2 二元操作符前后留空格 (14)4.4.3 一元操作符前后不留空格 (14)4.5 长行拆分 (15)4.5.1 较长的语句(>80字符)要分成多行书写 (15)4.5.2 循环、判断等语句要在低优先级操作符处划分新行 (16)4.5.3 函数或过程中的参数较长,则要进行适当的划分 (16)5 全局变量定义时初始化 (16)6 注释 (17)6.1 必须加注释的位置[推荐] (17)6.2 注释应适量且准确[推荐] (17)6.3 函数接口的注释格式 (17)6.4 变量的注释格式[推荐] (18)6.5 注释与所描述内容进行同样的缩排 (19)6.6 将注释与其上面的代码用空行隔开 (20)6.7 程序块结束行加注释[推荐] (20)7 EEPROM数据保护 (21)8 程序失效复位处理[推荐] (21)9 检查 (21)9.1 数组下标检查 (21)9.2 指针检查 (22)9.3 易混淆操作符检查 (22)9.4 右值变量检查 (22)9.5 差1错误检查 (22)9.6 变量溢出检查 (23)9.7 类型转换检查 (23)1编辑器程序统一使用VC的编辑器。
2程序文件的结构如果没有涉及使用平台化的用户文件,通常只能有一个用户主程序文件。
用户程序文件的内容按说明、编译宏定义、包含文件、用户数据类型定义、管脚定义、常量、变量、正文、长的常量数组的顺序编写。
2.1说明说明:说明位于用户程序文件的开头,主要内容有:(1)版权信息。
(2)文件名称。
(3)程序说明:说明程序用途、功能及使用方法等。
(4)版本记录。
(5)开发环境。
示例://版权信息//Copyright (c) 2001, XXXXXX有限公司产品开发部// All rights reserved.// 文件名称:filename.c// 程序说明:XXXXX主程序……//版本记录://V101://1、增加警铃输出延时;//2、修正****Bug。
//作者:***//时间:****.**.**//V100:正式发布。
//作者:***//时间:****.**.**//编译工具:Keil C 6.02.2编译宏定义说明:同一产品的不同硬件程序和系列产品的程序,应采用编译宏定义,来减少维护的工作量;2.3包含文件说明:包含引用的标准库头文件以及用户头文件。
用#include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。
用#include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。
示例:#include <lib_header.h>#include “user_header.h”2.4用户数据类型定义说明:定义结构、联合、枚举以及其它非标准的数据类型;示例:typedef union MacData //联合{unsigned char Buf[16]; //缓冲区struct //结构{unsigned char Mac; //类型unsigned char Len; //长度unsigned char Addr; //地址unsigned char Data[13]; //数据}Msg;};#define uint unsigned int;//自定义数据类型2.5管脚定义说明:定义本程序使用的管脚。
2.6常量说明:●有特定意义的常数必须进行宏定义;●同一特定意义的常数如在多个地方应用,必须进行宏定义;●调试维护需要调整的常数必须进行宏定义;●无特定意义的循环上、下限,不需进行宏定义。
2.7变量说明:定义程序所使用的变量。
●有关联的、相同地址空间、初始化、不需初始化的变量要放在一起;2.8正文2.8.1正文顺序[推荐]说明:●应按主程序和中断程序的共用子程序、各中断相关子程序和中断程序、主程序相关子程序和主程序;●关系紧密的子程序应放在一起,并按照从低到高的层次放。
尽量取消函数的声明,可通过注释说明;●除主程序和中断程序外,在不影响可读性的情况下不应设置只一个地方调用的函数。
2.8.2正文内容说明:包含初始化程序、主循环体程序和中断程序。
2.8.2.1初始化程序[推荐]说明:应按管脚初始化、RAM初始化、内部设置初始化、外设初始化、打开定时器、打开中断的顺序进行初始化。
2.8.2.2主循环程序和中断程序[推荐]说明:●定时应采用计时器处理,不能存在长时间的停滞等待;●不允许多个事件使用一个软件计时器。
计时器宜采用倒计时;●中断事件的响应如果在主循环能够完成响应,应放在主循环。
2.9长的常量数组说明:在此定义长的常量数组,如字库、图案等。
3命名命名的风格必须保持一致。
3.1常量、编译宏命名说明:常量、编译宏全部大写,单词间使用下划线分隔。
示例:#define MAIN_DELAY_NUM 13.2变量命名说明:通常,在变量中加入前缀以增进人们对程序的理解。
其前缀的通用格式为:数据类型缩写+模块名+。
同时,为了区分全局和局部变量,也兼顾命名的方便,特采用如下变量命名规则:●全局变量大小写结合,数据类型缩写后,单词首字母大写;●局部变量全部小写,数据类型缩写后,使用下划线分隔各单词;局部变量在不影响可读性的前提下,可以不写数据类型;●unsigned char类型的缩写不写;●汇编中,与MPU数据总线(如8位、16位)一致数据类型的缩写不写。
数据类型缩写:boolean bchar clong lfloat fdouble dint iunsigned int ui指针p结构s输入管脚bi输出管脚bo示例://管脚定义sbit biFire = P1^1;sbit boFireRelay = P1^2;//全局变量定义bit bFault;unsigned char FireAckNum;unsigned char DeviceStatus[242];unsigned char* pDevice;char cSampleValue;long lTime;long* plEntry;float fRadius;double dArea;int iFireRelayDelay;unsigned int uiFaultRelayDelay;unsigned int uiSounderDelay[4];void GetSampleValue(void){unsigned char temp;bit b_fault;long l_fire_delay;}3.3函数命名说明:函数命名应当直观且可以拼读,可望文知意,不必进行“解码”。
标识符采用英文单词或其组合,便于记忆和阅读,并且每个单词的首字母大写,长单词可以缩写,但缩写要使用大家基本认可的,并且必要是进行注释说明。
下单词的缩写能够被大家基本认可:temp 可缩写为tmp;flag 可缩写为flg ;statistic 可缩写为stat ;increment 可缩写为inc;message 可缩写为msg;4程序的版式4.1缩进:统一使用编辑器的TAB键进行缩进,同时设定其缩进量为系统默认说明:程序要采用统一缩进风格编写。
在下列情况下,必须采用缩进:函数或过程、类的定义、结构的定义、枚举的定义、判断和循环语句中的程序都要采用如上的缩进方式。
但如果同一程序块的缩进级数太多(一般不超过5级),可考虑使用函数减少缩进级数。
示例://风格良好的格式void Function(float x, float y, float z){if (…){…while (…){…} // end of while…} // end of if…}//风格很差的格式void Function(float x, float y, float z){if (…){…while (…){…} // end of while…} // end of if…}4.2空行:相对独立的程序块之间、变量说明之后必须加空行说明:空行起着分隔程序段落的作用。
空行得体(不过多也不过少)将使程序的布局更加清晰。
空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。
所以不要舍不得用空行。
示例:如下例子不符合规范。
if (!IsValidNI (ni)){... // program code}repssnInd = ssnData[index].repssnIndex;repssnNI = ssnData[index].NI;应如下书写if (!IsValidNI (ni)){... // program code}repssnInd = ssnData[index].repssnIndex;repssnNI = ssnData[index].NI;4.3代码行4.3.1一行代码只做一件事情说明:如只定义一个变量,或只写一条语句。
这样的代码容易阅读,并且方便于写注释。
示例:(a)为风格良好的代码行int width; // 宽度int height; // 高度int depth; // 深度x = a + b;y = c + d;z = e + f;(b)为风格不良的代码行。
int width, height, depth; // 宽度高度深度X =a + b; y = c + d; z = e + f;4.3.2if、for、while、do 等语句自占一行说明:执行语句不得紧跟其后。
不论执行语句有多少都要加{}。