项目代码文件管理

对事物进行分类将会使事物方便管理,使整体概念有清晰的思路,使其它人能更快理解其意图,同样也方便自己记忆。

所以在这里想从分类的角度对项目文件管理总结一下我的方法。

以嵌入式项目为例,将代码分以下几类:

项目定义代码:包含维护项目版本号,定义运行硬件、系统平台,定义项目基础数据类型,定义测试开关的代码。

公共代码:不依赖于平台,功能通用的代码。类似于标准库,只不过功能由自己实现。

驱动代码:mcu的所有功能操作。这部分将在下面详细说明。

外设代码:MCU通过通信接口控制外部周边设备的代码(如eeprom,rtc等)。这里要求MCU的通信接口驱动代码接口统一,这样外设代码不作任何修改就能在其它项目中应用(即更改MCU,外设代码也不用变动)。

功能模块代码:在项目中实现特定功能的代码。功能模块代码中又可按功能再进行分类,每个功能中可能又会有子功能。

开源代码:在项目中应用的开源代码。这里为什么将开源代码作为一类咧?因为不同作者的开源代码的编程风格不一至,将风格不一至的代码都集中放在一起(这也是一种分类),感觉好些。。。

------------------------------------------------------------------------

总体代码文件结构如下图:

 

其中include目录下为项目定义代码

公共代码文件结构如下图:

 

每一个公共功能都包含一个头文件,实现文件和测试文件。其中测试文件,包含了头文件提供的所有的对外接口的正确示例调用,该文件保障了本功能的单元测试正常。(不管是在编码,调试,维护上,会知道写了单元测试会省多少事!!)

驱动代码文件结构如下图:

 

驱动代码的文件结构与公共代码的文件结构不同,这里将头文件,实现文件和测试分别放在不同的文件夹,为何这么做咧?考虑到不同的硬件平台,对应同样设备的操作可能会不同,为了对所有平台代码的统一管理而这样做。若当有新的硬件平台被添加进来,或当另一个项目使用不同的硬件平台时,只需要添加驱动头文件对应的新的硬件平台实现就可以了。这里要求驱动头文件中每个文件对外提供的操作接口必须正确,即要求接口一旦定义就不能被修改(否则会导致较大范围代码的修改),但可以添加新的操作接口。

外设代码文件结构如下图:

 

外设代码文件结构与公共代码文件结构一致。

功能模块代码文件结构和开源代码文件结构与公共代码文件结构一致,不再截图说明。

 

posted @ 2016-02-23 00:09  chen_3070  阅读(417)  评论(0)    收藏  举报