模块化程序设计
面向对象程序通过“类“、”继承”、“封装”等理顺了关系,使得问题得到简化,在其基础上再进行“模块化”处理(功能归并),使程序“积木化”,通过“组合”成为“大”程序。程序的结构化/模块化很早就有了,现在有不少是“模块化”概念编制的。这里是自我理解学习和实践的总结。
1. 为什么模块化?在长期编程实践中,略大或略复杂的程序,越编越复杂,越编越难编,虽然有类的帮助,但还是避免不了复杂,因为都集中在了一起,就像“眉毛胡子”一把抓,为此,将程序分为多个部分,组合实现,避免了复杂混乱。“类”带来的副作用是“聚集”,而“模块”的作用是分散,解决“聚集”问题。
2. 概念:顾名思义是将程序组织成“块”,以“块”的方式使用。“块”可以是一个或一组相关或无关功能组成的,“块”通过“接口”输入/输出数据。“块”以源码、动/静态链接库形式提供框架程序应用。
3. “块”类型:统一“块”的划分/归并,理顺程序关系,方便使用。
3.1 单功能模块:实现一个功能,由自身模块或调动其他模块实现。
3.2 复合能模块:实现多个功能,由自身模块或调动其他模块实现。
3.3 直接接口:由函数参数实现数据输入/输出,并提供相关常量定义。
3.4 间接接口:由变量或缓存区实现数据输入/输出,解决时序传递问题,并提供相关常量定义。
4. 实现部分:与类相同。也可以是纯c方式。外部用的函数通过.h引出,内部用函数不引出,实现模块的“封装”。
5. 独立化:理想的模块是独立的,不依赖于其他程序,将自身能达到的能力定义为常量、枚举、宏定义等,对使用者限制范围。对辅助函数/模块私有实现。由于独立性要求,不能共享一个通用文件,是优点也是缺点,依具体情况而定。