单片机编程规则.pdf_第1页
单片机编程规则.pdf_第2页
单片机编程规则.pdf_第3页
单片机编程规则.pdf_第4页
单片机编程规则.pdf_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

导航硬件 导航硬件 单片机编程规范 单片机编程规范 导航硬件 单片机编程规则 目 录 目 录 1 前言 4 1 1 文档用途 4 1 2 阅读对象 4 1 3 概述 4 2 文件结构 4 2 1 版权和版本的声明 4 2 2 头文件的结构 5 2 3 定义文件的结构 5 2 4 main 函数 6 2 5 全局变量 6 2 6 常量 7 3 程序版式 7 3 1 函数接口说明 7 3 2 函数命名规则 8 3 3 变量命名规则 9 3 4 空行 9 3 5 代码行 10 3 6 代码行内的空格 11 3 7 对齐 11 3 8 长行拆分 12 3 9 注释 13 4 表达式和基本语句 13 4 1 运算符的优先级 13 4 2 复合表达式 13 4 3 if 语句 14 4 3 1 布尔变量与零值比较 14 4 3 2 整型变量与零值比较 14 4 3 3 浮点变量与零值比较 14 4 3 4 指针变量与零值比较 15 4 4 for 语句的循环控制变量 15 4 5 switch 语句 15 4 6 goto 语句 16 2 导航硬件 单片机编程规则 版本历史 编制 编制日期 版本 描述 审核 审核日期 赵颖慧 2008 7 2 V 1 0 0草稿 3 导航硬件 单片机编程规则 1 前言前言 1 1 文档用途文档用途 本文规定了车载导航系统单片机开发过程中的编程规范 包括数据定义规则 书写规范 注意事项等准则 所有本项目的单片机开发都要严格遵守本规范 1 2 阅读对象阅读对象 本文档的阅读对象如下 单片机程序设计工程师 单片机程序开发工程师 单片机程序测试工程师 其它相关人员 1 3 概述概述 本文档包括如下几部分内容 变量命名规则 程序书写规范 以及一些注意事项等内容 上述内容分为 4 章叙述 第 2 章 文件结构 叙述程序文件的结构及各部分的内容 版权和版本的声明方法和格 式 第 3 章 程序版式 叙述程序的书写规范 第 4 章 表达式和基本语句 叙述表达式和基本语句的使用 书写规范 2 文件结构文件结构 2 1 版权和版本的声明版权和版本的声明 版权和版本的声明位于头文件和定义文件的开头 使用中文书写 主要内容有 1 版权信息 2 文件名称 标识符 摘要 3 当前版本号 作者 修改者 完成日期 4 版本历史信息 4 导航硬件 单片机编程规则 Copyright c 2006 长春一汽启明公司 All rights reserved 文件名称 当前文件的名称 文件标识 目前什么也不填 空出 摘要 简要描述本文件的内容 其它说明 其它内容的说明 当前版本 输入当前版本 例如 V1 0 02 作 者 输入作者名字 完成日期 输入完成日期 例如 2000 年 2 月 25 日 修改记录 1 修改历史记录 包括修改日期 修改者及修改内容 修改日期 版 本 号 修 改 人 修改内容 修改记录 2 2 1 1 版权和版本的声明格式 版本标识 采用 来命名自己程序的编号 主版本号 为V1 次版本号为0 修订号为00到99 每修改一次程序修订号加1 2 2 头文件的结构头文件的结构 头文件由三部分内容组成 1 头文件开头处的版权和版本声明 2 预处理块 3 函数声明等 规则2 2 1 规则2 2 1 为了防止头文件被重复引用 应当用ifndef define endif 结构产生预处理 块 规则2 2 2 规则2 2 2 用 include 格式来引用标准库的头文件 编译器将从标准库 目录开始搜索 规则2 2 3 规则2 2 3 用 include filename h 格式来引用非标准库的头文件 编译器将从用 户的工作目录开始搜索 建议2 2 4 建议2 2 4 头文件中只存放 声明 而不存放 定义 2 3 定义文件的结构定义文件的结构 定义文件有三部分内容 1 定义文件开头处的版权和版本声明 5 导航硬件 单片机编程规则 2 对一些头文件的引用 3 程序的实现体 包括数据和代码 2 4 main 函数 函数 规则2 4 1 规则2 4 1 main 函数中尽量只出现函数调用 void Dosomething void if condition program code else program code void main void Dosomething void main void if condition program code else program code 2 4 1 风格良好的代码行 2 4 2 风格不良的代码行 2 5 全局变量全局变量 规则 2 5 1 规则 2 5 1 只允许数组类型的全局变量在定义后直接赋初值 其他类型的全局变量定义 后 调用赋初值函数进行初始化 将赋初值函数统一命名为 init Global Variable 规则2 5 2 规则2 5 2 全局变量名以g 开头 g 后跟着变量类型的缩写 常用变量类型缩写列表如下 i short int 2字节 f float d double c char 1字节 uc unsigned char 或 BYTE 1字节 l long 4字节 p pointer b BOOL n unsigned short int 2字节 dw ul DWORD或 unsigned long 4字节 a 数组 array of TYPE str 字符串 6 导航硬件 单片机编程规则 t 结构类型struct u 联合类型union e 枚举类型enum bs 位域 位段结构类型 struct bits bt 位段类型内的变量bit 变量名放在数据类型的缩写 第一个字母大写其他字母小写 但有些变量名是几 个英文的缩写 要全部大写 byte g ucStatus 3 0 x11 0 x12 0 x13 数组在定义后直接赋初值 byte g ucRead 在 init Globalvariable 函数中赋初值 byte g ucSPI SPI全部大写 word g wWrite void init Global Variable void void init Global Variable void g ucRead 0 g wWrite 0 g ucSPI 0 2 6 常量常量 规则 2 6 1 规则 2 6 1 常量名全部使用大写字母 规则2 6 2 规则2 6 2 需要对外公开的常量放在头文件中 不需要对外公开的常量放在定义文件的 头部 为便于管理 可以把不同模块的常量集中存放在一个公共的头文件中 规则2 6 3 规则2 6 3 在C 程序中只使用const 常量而不使用宏常量 即const 常量完全取代宏 常量 3 程序版式程序版式 3 1 函数接口说明函数接口说明 规则 3 1 1 规则 3 1 1 每个函数的定义前面都要加上函数的接口说明 具体说明格式为 函数名称 函数功能 输入参数 输出参数 返 回 值 7 导航硬件 单片机编程规则 其它说明 例如 void WriteTime BYTE ucMinute 函数 函数名称 存储时间 WriteTime 函数功能 用于存储时间 输入参数 BYTE pucMinute 输出参数 无 返回值 0 成功 1 失败 其他说明 3 2 函数命名规则函数命名规则 规则3 2 1 规则3 2 1 函数名的首字母大写 例如 void Draw void 函数名 void SetValue int value 函数名 规则3 2 2 规则3 2 2 用正确的反义词组命名具有互斥意义的函数 例如 int SetValue int GetValue 一些在软件中常用的反义词组 add remove begin end create destroy insert delete first last get release increment decrement put get add delete lock unlock open close min max old new start stop next previous source target show hide send receive source destination cut paste up down 规则3 2 3 规则3 2 3 程序中不要出现仅靠大小写区分的函数 例如 void foo int x 函数foo 与FOO 容易混淆 void FOO float x 规则3 2 4 规则3 2 4 规定如下常用函数名的缩写 常用词 缩写 常用词 缩写 Argument Arg Maximum Max Buffer Buf Message Msg Clear Clr Minimum Min Clock Clk Multiplex Mux Compare Cmp Operating System OS Configuration Cfg Overflow Ovf Context Ctx Parameter Param 8 导航硬件 单片机编程规则 Delay Dly Pointer Ptr Device Dev Previous Prev Disable Dis Priority Prio Display Disp Read Rd Enable En Ready Rdy Error Err Register Reg Function Fnct Schedule Sched Flag Flg Semaphore Sem Hexadecimal Hex Stack Stk High Priority Task HPT Synchronize Sync I O System IOS Timer Tmr Initialize Init Trigger Trig Mailbox Mbox Write Wr Manager Mgr 3 3 变量命名规则变量命名规则 规则3 3 1 规则3 3 1 程序中不要出现仅靠大小写区分的相似的变量 例如 int x X 变量x 与X 容易混淆 规则3 3 2 规则3 3 2 用正确的反义词组命名具有互斥意义的变量 例如 int minValue int maxValue 规则3 3 3 规则3 3 3 程序中不要出现变量名完全相同的局部变量和全局变量 尽管两者的作用域 不同而不会发生语法错误 但会使人误解 建议3 3 4 建议3 3 4 尽量避免名字中出现数字编号 如Value1 Value2 等 除非逻辑上的确需要 编号 规则3 3 5 规则3 3 5 使用一致的前缀来区分变量的作用域 变量作用域前缀规范如下 g 全局变量 s 模块内静态变量 m 类的数据成员 空 局部变量不加范围前缀 规则3 3 6 规则3 3 6 完整的变量名应由前缀 变量名主体组成 变量名的主体应当使用 名词 或者 形容词 名词 且首字母必须大写 各种前缀字符可能组合使用 在 这种情况下 各前缀顺序为 变量作用域前缀 变量类型前缀 例如 float g fValue 类型为浮点数的全局变量 3 4 空行空行 规则3 4 1 规则3 4 1 在每个函数定义结束之后都要加空行 规则3 4 2 规则3 4 2 在一个函数体内 逻辑上密切相关的语句之间不加空行 其它地方应加空行 9 导航硬件 单片机编程规则 分隔 空行 void Function1 空行 void Function2 空行 void Function3 空行 while condition statement1 空行 if condition statement2 else statement3 空行 statement4 3 4 1 函数之间的空行 3 4 2 函数内部的空行 3 5 代码行代码行 规则3 5 1 规则3 5 1 一行代码只做一件事情 如只定义一个变量 或只写一条语句 这样的代码 容易阅读 并且方便于写注释 规则3 5 2 规则3 5 2 if for while do 等语句自占一行 执行语句不得紧跟其后 不论执行语 句有多少都要加 这样可以防止书写失误 int width 宽度 int height 高度 int depth 深度 int width height depth 宽度高度深 度 x a b y c d z e f X a b y c d z e f if width height dosomething if width 良好的风格 void Func1 int x int y int z 不良的风格 if year 2000 良好的风格 if year 2000 不良的风格 if a b I 10 i 良好的风格 for i 0 i 10 i 不良的风格 for i 0 I 10 i 过多的空格 x a b a b 良好的风格 x aFunction 不要写成b Function 3 7 对齐对齐 规则3 7 1 规则3 7 1 程序的分界符 和 应独占一行并且位于同一列 同时与引用它们的 语句左对齐 11 导航硬件 单片机编程规则 规则3 7 2 规则3 7 2 之内的代码块在 右边间隔几个空格处左对齐 void Function int x program code void Function int x program code if condition program code else program code if condition program code else program code for initialization condition update program code for initialization condition update program code While condition program code while condition program code 如果出现嵌套的 则使用缩进对齐 如 3 7 1 风格良好的对齐 3 7 2 风格不良的对齐 3 8 长行拆分长行拆分 规则3 8 1 规则3 8 1 长表达式在超出80个字符时 要在低优先级操作符处拆分成新行 操作符放 在新行之首 以便突出操作符 拆分出的新行要进行适当的缩进 使排版 整齐 语句可读 if very longer variable1 very longer variable12 长行的拆分 3 9 注释注释 注释符为 行注释采用 注释通常用于 1 版本 版权声明 2 函数接口说明 3 重要的代码行或段落提示 规则3 9 1 规则3 9 1 一个程序的注释要在30 以上 规则3 9 2 规则3 9 2 注释是对代码的 提示 而不是文档 程序中的注释不可喧宾夺主 注释 太多了会让人眼花缭乱 规则3 9 3 规则3 9 3 如果代码本来就是清楚的 则不必加注释 否则多此一举 令人厌烦 规则3 9 4 规则3 9 4 边写代码边注释 修改代码同时修改相应的注释 以保证注释与代码的一致 性 不再有用的注释要删除 规则3 9 5 规则3 9 5 注释应当准确 易懂 防止注释有二义性 错误的注释不但无益反而有害 规则3 9 6 规则3 9 6 尽量避免在注释中使用缩写 特别是不常用缩写 规则3 9 7 规则3 9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论