设计良好的模块,应该是层次化的。层次化不是自然而然的,而是需要精心的设计。设计一个层次化的组件,可以从下面几方面来考虑:
- 切分功能,每个组件专心做一件事。
- 识别功能之间的依赖,避免双向依赖。
- 识别出最小的公理系统(内核组件),然后在这个公里系统之上建立定理系统(基础服务组件),最后再建立常用的推论(应用组件)。
- 分析哪些会改变,哪些不会改变。不变部分固化在组件中,可能会改变的部分抽象成接口,以便扩展。
- 考虑默认值和默认扩展。默认值和默认扩展应该是最安全、最常用的选择。对于默认值和默认扩展,用户在使用时不需要额外的配置。