Skip to content

Latest commit

 

History

History
14 lines (7 loc) · 1.42 KB

cn_2.6_modules.md

File metadata and controls

14 lines (7 loc) · 1.42 KB

模块 Modules

每个人都会使用模块,但很少有人将其作为模型的正式组成部分。代码可以按照不同的维度分解成模块,有时按照技术架构,有时按照开发人员的分工。即使是经常进行重构的开发人员,也往往倾向于使用项目初期形成的模块。

对耦合性和内聚性的解释,往往使它们听起来像是技术指标,可以根据关联和交互的分布来机械地判断。然而,不仅是代码,概念也可以划分为模块。人一次能思考的事情是有限的(因此要低耦合);而不连贯的思想碎片又会混成一锅粥,难以理解(因此要高内聚)。

因此:

为概念划分模块,使模块能表达系统的含义,并包含一组内聚的概念。为模块命名,这些名称将成为统一语言的组成部分。模块是模型的一部分,其名称应反映对领域的深层次理解。

这样做,通常能降低模块之间的耦合度。但如果不能,就要设法修改模型,以便将概念拆解开来;或者找到之前被忽视的隐含概念,以这个概念为基础来划分模块,从而将各个概念元素合理地整合在一起。通过识别可以独立理解和分析的概念,来达到低耦合。不断优化模型,直到能够根据高层领域概念对模型进行划分,并且相应的代码也能解耦为止。

【模块也称为“包”(Packages)】