知识卡片
三视图类型在代码中的可见度
内容
三种视图类型能从代码里看出来的程度天差地别:模块视图类型和代码同处一层,能看到大部分内容,但主流语言的模块系统普遍表达不出模块依赖、组件/连接器这类更大粒度类型;运行时视图类型很难推断,必须在脑中把静态代码”运行”起来,组件边界和连接器几乎都淹没在”对象的海洋”里;部署视图类型则基本不可能从源代码推断出来,代码通常只整块发布到某台机器。这解释了为什么架构沟通不能只靠”读代码就够了”。
参考来源
- 位置:《恰如其分的软件架构》第10章《代码模型》10.6节《表达什么》(源文件:_epub-src/OEBPS/text00101.html)
- 结论依据:原文分别说明模块视图类型能被代码较好表达但缺乏模块依赖表达能力,运行时视图类型难以推断("对象的海洋"),部署视图类型通常不可能从源代码推断。
- 原始内容:源代码本身是在模块视图类型中的,所以,源代码能够很好地表达模块视图中的大多数元素……系统的运行时视图可以被看做是一个对象的海洋……运行时视图类型只不过是很难从源代码中被推断出来,而部署视图类型,则通常是不可能被推断出来。