写在前面,本文主要是对我自己两年多做单片机程序之后的一些总结性的东西,可能对于大多数大神来说相对比较初级。在此也希望大神们轻喷!
主要内容:
1.我对单片机程序框架的认识
2.一个具体的框架搭建的思维过程
3.有关命名与文件的一些关系
首先谈下我对程序框架的基本认识:
CSDN是一个大神云集的地方,而且也是国内较早的有关软件的编程的社区,里面有这巨多大牛级的人物,这里一直是我寻找资源的圣地(就是现在积分有点贵)。作为软件工程师(无论多牛逼的软件工程师)都会经常性习惯性的去看别人或者自己很早之前写的代码。拿我自己来说,以前拿到论坛里大神的代码回去大体的看一看 然后似懂非懂的开始跑,跑不通不管换,再找新的,然后在跑,一旦是跑通了,诶好。基本上是可以了然后也不会去仔细推敲了拿过来就开始使用,直到后面遇到问题,走投无路了才又开始重新开始去重新去推敲。最后几经周折终于弄明白了点才有所收获。
这其实是本末倒置的,而且这也说明我对软件的架构思想并不清晰。最近跟一个有着十多年的从业经验的汽车电子软件方面的大牛交流,才明白软件其实最为重要的是有一个完善的架构。一个完美的软件架构能够极大的节省开发和维护成本,所以有一个很好的软件架构真的是非常重要!而且软件架构的思想应该是要深深植入软件开发人员的脑海中的。
说了以上这么多废话,可能大家会问 究竟什么才是真正的软件架构?其实这是一个很复杂的东西,需要追溯到最为根本的需求上面,需求才是所有的起点。说的直白一点我们需要知道我们这个软件究竟用来干什么。同时在我们学习计算机的时候老师们经常会拿出来说的有关软件设计的目标:可靠性(Reliable)安全性(Secure)可伸缩性(SCAlable)可定制化(CuSTomizable)可扩展性(Extensible)可维护性(MAIntainable)。
一个好的嵌入式软件是需要满足功能的前提下满足这些条件才能算的上是一个好的嵌入式软件。而对软件架构的思想有一个比较好的理解也会让我们今后读程序和写程序的过程中省力不少。
下面我将给大家讲一讲具体的软件框架搭建的过程:
首先了解需求:了解软件的具体要做什么工作。针对所需要的功能做相应的驱动的配置和功能模块的初始化和具体到每一个功能的.C和.H文件都独立封装,解耦设计是可裁剪性的保障。
各个功能部分同意分块放置,功能类似的靠近放置(变量命名时也遵循这个规则)。于是
整个程序基本可以分成上图中的几个部分了每个部分都可以有几个.C.H文件。这是我们准备我们所需要的所有的材料的过程。
我们都知道基本配置完成之后后面就是主程序流程的执行过程了。
程序的执行才是我们核心的工作过程,从最开始的初始化,后面主循环外加中断整个流程就是我们做事情的过程在这个过程中我们统一去做各个功能模块之间变量和函数的交替变化和使用。而今后如果是修改的话也是按照以上的步骤进行修改就可以很方便。
有关命名:
命名一般包函两个方面一是变量命名,二是函数命名。
变量命名需要直观且尽量简洁,当然直观是前提简洁是追求。当然业界也有很多流行的规范如驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法等。就这一点我觉得按个人习惯就好。值得注意的是变量放置的位置一般为了方便尽量也不要在各个功能块中交叉。
有关函数命名,一般尽量表达清楚意思,而且多用传递参数也是有效的解耦的方式。
有关程序的框架暂时写这么多,以后有新的感悟再进行补充和调整
mark date : 20180815 17:03