高内聚是有极限的. 当代码在一个维度上高度内聚的时候, 在其它维度上是发散的. -- 代码内聚设计的不确定性原理
大家都知道量子力学的不确定性原理: 在微观世界里, 有几对物理量不能同时精确的测定, 包括速度与位置, 以及能量与时间. 比如当我们精确的测定一个粒子的速度使其误差很小的时候, 我们对其位置的测量误差从0到正无穷都有可能, 换句话说, 此时粒子可能位于宇宙的任何地方, 这里的极限就是二者误差的乘积总是大于一个被称为普朗克常数的数.
代码的设计有时会感到同样的张力: 无法做到完全的内聚. 当代码在一个维度上高度内聚的时候, 在其它维度上是发散的或耦合的. 无论是逻辑设计还是物理设计.
看一个代码逻辑设计的例子, 就是结构和行为.
当代码在结构上内聚的时候, 在行为上是发散的. 主流的面向对象编程范式是按照结构优化的, 看一下你的代码中的class的名字, 大都是名词, 是一个事物, 表达了What the system is. 但这个系统具有什么样的行为, 能做什么事, What the system does, 却被切片, 分散到系统的各个角落. 我们或许能说出系统的静态结构是什么样子, 却要花费更多的精力才能搞清楚系统做了什么, 能做什么, 结构间的交互是什么样子.
面向过程的编程范式是按照行为优化的. 过程的名字通常是动词, 表达了 What the system does. 系统的静态结构则被掩藏在了行为之后
DCI有助于解决代码逻辑设计的内聚问题.
一个代码物理设计的例子, 就是按照业务还是技术架构层次来划分模块和目录结构
当我们按照feature来划分目录结构的时候, 相同的技术架构层次的代码会被分到不同的目录中. 比如数据访问层的代码会分散到各个feature的目录中.
当我们按照技术层次架构来划分目录的时候, 同一个feature的代码会被分到不同目录中, 而同一个目录中会包含多个feature的代码. 比如流行的MVC框架的缺省目录结构都是所有的controller放在一起, 所有的model放在一起等等. 当我需要看一个feature的完整实现时, 需要从不同目录中挑出不同文件来查看.
现在的编程语言是基于文本的, 或者其实也是基于文件系统的. 文件系统是一棵树, 每个叶子节点只能隶属于一个父节点, 树的结构只能按照一个维度优化. 语言本身的元数据也不够丰富. 这些都限制了能够生成各种视图的IDE的出现
这应该只是约束理论的一个实例.
分享到:
相关推荐
软件开发中的问题什么是高内聚低耦合?起因模块独立性指每个模块只完成系统要求的独立子功能并且与其他模块的联系最少且接口简单两个定性的度量标准――耦合性和内聚性。耦合Coupling是模块之间依赖程度的度
构件内聚性度量方法研究构件内聚性度量方法研究构件内聚性度量方法研究构件内聚性度量方法研究构件内聚性度量方法研究构件内聚性度量方法研究
高内聚要求软件系统中的各个元素具有较高的协作性,因为在我们在完成软件需求中的一个功能,可能需要做各种事情,但是具有高内聚性的一个元素,只完成它职责内的事情,而把那些不在它职责内的事情拿去请求别人来完成...
内聚:一个模块内各个元素彼此结合的紧密程度 耦合:一个软件结构内不同模块之间互连程度的度量
软件系统的设计思想和原则、设计 方法、系统架构及体系结构、设计模式、运行平台、 开发工具等方面进行综合考虑和合理取舍。
R模型、软件维护、软件测试、软件生命周期、详细设计、模块化、数据流设计、内聚程度、测试计划、需求分析、数据字典、风险驱动、模块内聚性等知识点。 判断题共10分,涵盖软件开发、系统测试、编程、高级语言、...
spring 底耦合高内聚
聚海龙:2018年年度报告.PDF
耦合内聚.doc
20.2 粒度:包的内聚性原则 20.3 稳定性:包的耦合性原则 20.4 自顶向下设计 20.5 稳定依赖原则 20.6 稳定抽象原则 20.7 结论 第21章 FACTORY模式 21.1 依赖关系环 21.2 可替换的工厂 21.3 对测试支架使用...
聚海龙:2019年半年度报告.PDF
祸和以及内聚对数据信息结构具备直接的影响,操作人员需要对这两个主要因素的数据整合数据信息结构从而高效解决计算机软件开发设计的难点。 2.3设计全面性的数据结构 现今我国软件开发的数据层次是通过warner表示的...
(公共汽车内的人群) 逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。(警察局里的警察) 时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。(交响乐团的演奏员) ...
聚烯烃:保持坚挺(26页).pdf
一周集萃:聚烯烃:原油高位供需偏弱短期聚烯烃或窄幅整理.pdf
三聚环保:2021年半年度报告.rar
氟聚股份:2021年半年度报告.rar
氟聚股份:2021年半年度报告.PDF
麒聚科技:2019年半年度报告.PDF
神州聚海:2019年半年度报告.PDF