知识卡片
架构设计的五项关键原则
内容
相比商业原则、数据原则、应用程序原则、技术原则这类偏企业IT治理层面的一般性原则,架构设计有五项更直接指导具体设计决策的关键原则。关注点分离:把程序分解为独立的、功能重叠部分尽可能少的模块,从而达到高内聚低耦合——但书中特别提醒,错误的功能分解同样会导致高耦合,甚至让每个功能模块内部的子功能模块之间产生隐含的复杂性重叠,说明”分离”本身不是目的,分离得对不对才是关键。单一职责原则:每个组件或模块应负责一个特定特征或功能、或一组内聚的功能集合。最少知识原则(迪米特法则,LoD):一个组件或对象应该对其他组件或对象的内部细节尽可能少地了解——这条原则和关注点分离形成配合,关注点分离处理”怎么切模块”,最少知识原则处理”切开之后模块之间该知道多少对方的事”。不重复自身原则(DRY):只在一个地方指定意图,例如特定功能只能在一个组件内实现,不能被复制到其他组件里——这条原则的价值不只是省代码量,更在于避免同一逻辑散落多处后,修改时容易漏改导致行为不一致。尽量减少前期设计:只设计必要的部分,避免大量前期设计(Big Design Upfront,BDUF),这条原则也被称为YAGNI(你不需要它)——但书中明确指出这不是绝对规则:如果开发成本和设计故障率非常高,可能仍需要前期全面设计和测试;只有在需求不明确、或设计随时间推移有演变可能性的场景下(典型如敏捷开发),才应该避免过早投入大量前期设计工作。这五项原则合在一起,构成了一套从”如何切分模块”(关注点分离/单一职责)到”切分后如何互相协作”(最少知识/DRY)再到”该在什么时候把设计做到多细”(YAGNI)的完整决策链条。
参考来源
- 位置:《软件架构理论与实践》第8章《软件架构设计和实现》"8.3.2 架构设计的关键原则"节(源文件:_epub-src/OEBPS/text00066.html)
- 结论依据:原文逐条给出关注点分离、单一职责原则、最少知识原则(迪米特法则)、不重复自身(DRY)原则、尽量减少前期设计(YAGNI)的定义,并说明关注点分离"错误地分解功能也会导致高耦合",以及YAGNI的适用边界,直接支撑本卡片结论。
- 原始内容:关注点分离:将程序分解为独立的、功能重叠部分尽可能少的一个个模块,从而达到高内聚和低耦合。然而,错误地分解功能也会导致高耦合……最少知识原则(又被称为迪米特法则,LoD):一个组件或对象应该对其他组件或对象的内部细节尽可能少地了解。