知识卡片
双向依赖会让系统退化成不可拆解的整体
内容
“混乱大都市”里模块依赖不是单向的——组件A伸手进B内部,B又反过来硬编码调用A,系统没有分层,退化成一整块紧咬在一起的软件。代价是:启动骨架就必须创建所有组件,孤立看任何代码都没意义,集成测试搭不起来,因为每个组件依赖几乎所有其他组件。分层的价值就在于让依赖方向单一,使系统能被独立理解和测试。
参考来源
- 位置:《架构之美》第2章《两个系统的故事:现代软件神话》2.1.1节《后果》"不必要的耦合"(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0105.xhtml)
- 结论依据:原文明确"'大都市'没有清晰的分层。模块之间的依赖关系不是单向的,耦合常常是双向的……系统没有最底层,也没有控制中心……你想启动系统骨架就不得不创建所有的组件……组件层次的集成测试也不能够创建"。
- 原始内容:"大都市"没有清晰的分层。模块之间的依赖关系不是单向的,耦合常常是双向的……这意味着系统的各部分之间耦合非常紧密,你想启动系统骨架就不得不创建所有的组件……这使得低层次的测试不能够进行。