第五章 MCU方软件设计
5.5 嵌入式软件编程规范总结与体会
经过这段时间毕业设计工作以及三年的研究生学习,本人对嵌入式软件编程规范 有了一些感性的认识,在此作以下总结。
5.5.1 注释
注释是软件编程设计的一个重要组成部分,一个注释清晰的程序可以使得一个原 本对此段程序不了解的人员很快的了解程序的功能和结构。这一点对于程序设计者本 身也是很重要的,一个大的软件设计周期可能很长,当设计者在设计后期再回头看最 初设计的东西时,如果注释不清楚则仍然要花费很多时间去重新来了解自己编写的程 序。当然注释内容也不是越多越好,注释太多一方面使得程序太长显得很拖沓冗长,
另一方面也使得程序结构不适很清晰。对于嵌入式的底层软件程序编程注释应该做到 以下两点:
(1) 程序头的注释
程序头的注释中应该能够包括以下内容:程序名,功能描述,入口参数,出口参 数,占用堆栈空间大小,占用的系统寄存器,内部调用的函数,设计人员,编程时间,
备注,调用实例。有了这些内容,调用此段程序时,不必详细了解程序的实现细节也 可以放心的使用。
(2) 语句的注释
语句的注释包括两个内容,其一是单条语句的注释,另一种是整段功能的注释。
对于单条语句注释时要力求简单,对于那些一目了然的语句就没有必要加注释了。对 于整段的注释应该添加在这段语句之前,如果在程序中前后有顺序关系,最好能加上
45
标号,这样会使得程序看起来结构更清晰。对于那些已经在整段注释中描述过的内容 就不要再出现在单条语句中了。
注释在编程时固然比较麻烦,但是对于后期设计,以及加强程序的可读性,提高 自己的编程能力都是很有好处的,在编程过程中应该得到足够的重视。
5.5.2 命名规则
一个好的命名规则可以使得程序中所有的程序名,变量名显得很有意义,从命名 的方式中也可以看出编程功底。命名中强调两点:一是命名中尽量避免中英文的混合 命名,二是子程序中标号命名时将子程序名带入其中,这样可以避免标号的重复。
5.5.3 程序分割
对于一个大的软件开发,不同的功能分割可以使得实现时的难度差别很大。这种 实现的难度在设计初期表现并不明显,到了后期这种由于设计时功能划分的混乱造成 的问题会越来越多地暴露,此时不断地修改,不断地调整,可能最终还是无济于事,
导致最终的失败。因而在设计的初期就要对整体做好把握,各部分功能进行合理的切 割,定好明确的出口入口,如此才能保证最终得到一个完美的软件产品,即使某一方 面出了问题,也可以在其内部解决掉而不要牵扯到其他的内容。
5.5.4 程序测试
程序测试是软件设计的一个 重要的环节。嵌入式系统的设计中应该包括两层测 试:首先是各模块本身的测试,在各部分程序都设计完成最终进行整合前,各部分内 容应该是得到了充分的测试,并保证没有问题,如果出现问题仍然能够回到该模块中 重新测试,迅速确定是否的确是模块内部有问题;另一项就是系统整合后的测试,测 试软件并不一定是最终的交付给用户的程序,而仅仅是用于测试各功能模块协作工作 的稳定性,健壮性等。当然最终交付的程序当然也要进行测试,这一点是所有设计者 都知道的。对于前期的测试也是不容忽视的,前期进行充分的测试可以大大减少后期 综合测试的出错可能性,而且后期测试相对也比较麻烦,尽量不要把本该前期所做的 工作带到后面,这样会成倍的增加工作量。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
5.5.5 版本控制
之所以要提到版本控制问题是强调一下不要因为版本的混乱使得做好好的程序 被冲掉,使得很多工作都白白浪费掉。在设计过程中一般建议使用三个目录:当前工 作目录,历史目录,临时工作目录。历史目录中保留近三天到一周的工作内容,更长 时间的可以一周或半个月保存一个版本;当前工作目录中保存着正在修改的工作,但 是并不在此目录下进行修改,真正要操作时把此部分内容拷贝到临时工作目录中,在 那里面进行操作,操作完成后将其拷贝回当前工作目录,并及时的把当前工作目录内 容备份到历史目录中。备份工作时在文件夹上加上日期以防混淆。养成这样良好的习 惯,对于编程工作还是很有益处的。
以上即是作者对嵌入式软件编程规范的一些体会。
47