前言
在我们写代码的过程中,往往只考虑功能的实现,很少考虑或者不考虑代码之后的维护程度,但是随着系统愈来愈复杂,即便是智商最为发达的程序员也发现,单一过程的复杂度已经超出他的掌控极限。所以这需要人们在对于比较复杂的模块时,需要对大问题进行分解。本人之前是有看类似的设计相关的书籍,但是还是感觉在实际操作中,没有很充分的运用上去,没有养成习惯,现在重新对这些来进行一次学习
问题
- 模块该怎样划分才是合理的?
- 怎样定义API才是合理的
核心原则–高内聚,低耦合
高内聚:关联紧密的事物应该被放在一起,并且只有关联紧密的事物才应该被放在一起
低耦合:软件单位之间尽可能不要相互影响。
总结
-
低内聚的模块首先拆分为多个高内聚的模块;然后再考虑这多个模块之间的API设计,以降低这些高内聚的软件单元之间的耦合度。
-
双方各自独自变化,互不影响
方法
减少重复代码
关注于如何对原有模块进行拆分,以提高系统的内聚性。
减少依赖
1.API 应包含尽可能少的知识。因为任何一项知识的变化都会导致双方的变化;
2. API 也应该高内聚,而不应该强迫API的客户依赖它不需要的东西。
3. 在定义接口时,应该站在客户的角度,思考用户的本质需要,由此来定义API。而不是站在技术实现的方便程度角度来思考API定义。