一、背景
-
近期在想办法重构一块 LCD 代码。想要构建一个组件,充当MVC模型中的C的角色。
-
之前M(模式)和V(显示)是耦合的。不好读,不好维护,bug多等问题。
-
不过在重构过程中,很不容易发现C模块的细节是不是也和M或者V耦合了。 理论上,我只希望使用API和其它模块交互。 比如定义的结构体名称,是不是在不应该出现的地方出现了。
-
尤其是和别的同事合作,我要一个个检查代码,还有很多其它工作,不能在这里花费太多时间。
-
所以决定借助编译器来帮忙。使用两个头文件。
-
本次是要写LCD显示管理的模块。所以分成了LcdDisplayManager.h 和 LcdDisplayManagerInternal.h
如图:
对外仅仅暴露少部分可以暴露的。
这样,我只要检查内部的头文件没有被其它的模块包含,就知道没有耦合。
二、两个头文件的好处
- 可以借助编译器来检查是不是模块之间存在不希望的耦合。
- 也让编写模块的每个程序员都不由的思考到底这个API到底要对外还是对内。让后来参与的程序员也能意识到这一点。有利于代码的维护。
三、参考
能意识到这一点。有利于代码的维护。
三、参考
- libevent源码