打印
[MCU]

程序模块间的解耦

[复制链接]
3455|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luofeng2g|  楼主 | 2014-12-5 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在我们做项目过程中,一般如果是大型的项目都会把根据功能进行模块化,但是在模块化过程中避免不了各模块之间的“通信”。很容易模块间的这种“通信”会形成一个网络,在下次移植或是更改时,牵一发而动全身!怎么去除这种耦合,也就是解耦,各位大牛都来讨论讨论!

相关帖子

沙发
mcu5i51| | 2014-12-5 13:24 | 只看该作者
项目或设备本身就是相互影响的,没有办法全部解除通讯
或许参考一些操作系统弄些硬件的“设备文件”可以减少些,不过会把问题复杂化

使用特权

评论回复
板凳
ayb_ice| | 2014-12-5 13:31 | 只看该作者
邮箱,消息队列都是通信,是个不错的方法

使用特权

评论回复
地板
wxjcan| | 2014-12-5 16:24 | 只看该作者
同意楼上

使用特权

评论回复
5
苏山人家| | 2014-12-5 23:58 | 只看该作者
驱动模块我都是用结构体封装
功能模块复用很少

使用特权

评论回复
6
luofeng2g|  楼主 | 2014-12-7 21:41 | 只看该作者
mcu5i51 发表于 2014-12-5 13:24
项目或设备本身就是相互影响的,没有办法全部解除通讯
或许参考一些操作系统弄些硬件的“设备文件”可以减 ...

确实有些是把简单问题复杂化,全局变量一般能用什么代替呢??

使用特权

评论回复
7
luofeng2g|  楼主 | 2014-12-7 21:42 | 只看该作者
ayb_ice 发表于 2014-12-5 13:31
邮箱,消息队列都是通信,是个不错的方法

这些就像是os,如果裸奔这样写的话就不如直接上os了

使用特权

评论回复
8
luofeng2g|  楼主 | 2014-12-7 21:43 | 只看该作者
苏山人家 发表于 2014-12-5 23:58
驱动模块我都是用结构体封装
功能模块复用很少

一般全局变量怎么处理?

使用特权

评论回复
9
ayb_ice| | 2014-12-8 08:04 | 只看该作者
luofeng2g 发表于 2014-12-7 21:42
这些就像是os,如果裸奔这样写的话就不如直接上os了

不能这么说

程序的核心是思想,是封装,是维护方便

使用特权

评论回复
10
luofeng2g|  楼主 | 2014-12-8 09:21 | 只看该作者
ayb_ice 发表于 2014-12-8 08:04
不能这么说

程序的核心是思想,是封装,是维护方便

谢谢回复!关于这方面,有没有推荐的书籍啊?

使用特权

评论回复
11
ayb_ice| | 2014-12-8 09:22 | 只看该作者
luofeng2g 发表于 2014-12-8 09:21
谢谢回复!关于这方面,有没有推荐的书籍啊?

操作系统的书就不错

使用特权

评论回复
12
苏山人家| | 2014-12-8 15:19 | 只看该作者
luofeng2g 发表于 2014-12-7 21:43
一般全局变量怎么处理?

驱动这部分都封装在结构体内! 功能模块根据功能不同封装结构体  例如显示用的Display结构体   发送数据用的消息结构体    类似类的概念

使用特权

评论回复
13
luofeng2g|  楼主 | 2014-12-8 17:43 | 只看该作者
苏山人家 发表于 2014-12-8 15:19
驱动这部分都封装在结构体内! 功能模块根据功能不同封装结构体  例如显示用的Display结构体   发送数据 ...

那我如果一个模块只用另一个模块的某个状态(一个全局变量),也封装在结构体中么?还是有其他想法?》

使用特权

评论回复
14
苏山人家| | 2014-12-8 21:20 | 只看该作者
本帖最后由 苏山人家 于 2014-12-8 21:24 编辑
luofeng2g 发表于 2014-12-8 17:43
那我如果一个模块只用另一个模块的某个状态(一个全局变量),也封装在结构体中么?还是有其他想法?》 ...


模块参数封装成结构体,别的模块需要就去读写这个结构体。类似于stm32库
例如触摸芯片  做个结构体 一个触摸状态标志flag 两个原始ad(x,y)两个转换后地址。

使用特权

评论回复
15
luofeng2g|  楼主 | 2014-12-8 21:36 | 只看该作者
苏山人家 发表于 2014-12-8 21:20
模块参数封装成结构体,别的模块需要就去读写这个结构体。类似于stm32库
例如触摸芯片  做个结构体 一个 ...

http://blog.chinaunix.net/uid-26443921-id-3361188.html看看这个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

824

帖子

5

粉丝