博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于“高内聚,低耦合”的笔记
阅读量:6888 次
发布时间:2019-06-27

本文共 661 字,大约阅读时间需要 2 分钟。

hot3.png

不要一棒子把“耦合”削死。耦合是一个宽泛的概念。两个程序模块有关联就叫做耦合。

某些模块必然要关联起来才能工作,这是由业务逻辑决定的,不能否认。所以解耦并不是字面意义上的把关联拆掉,而是把模块之间的关联放松到必要的程度。一些建议:

模块只对外暴露最小限度的接口,形成最低的依赖关系。 只要对外接口不变,模块内部的修改,就不得影响其他模块; 删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分; 软件工程有一条铁律“高内聚、低耦合”就是这个道理:必要的耦合不可否认,没有耦合程序就做不成事;但是不必要的紧耦合,就会让程序“牵一发而动全身”,最终让程序员的编写和维护都无从下手。

人类同一时间只能专注于一小部分的内容。“高内聚、低耦合”就是为了满足人类的这个特点——小尺度上只专注一个模块,局部的编码工作才能够进行。大尺度上把具体代码转化为一些抽象的“模块”和“依赖关系”,才能够抓大放小,把握住程序的脉络,拼合出一个完整的产品。

想象一下“社会大分工”这个模型——每一个小单位只专注自己的业务部分,与其他单位只存在业务外包的关联,以及物质、信息的交互。事实已经证明:这样的模型比以前大国企“大包大揽”自办各种职能部门的效率,有量级程度的提高。这就是“高内聚、低耦合”在现实世界中的体现。

程序就是人类创造的第二世界,程序的逻辑无非是世界运行规律的抽象。跳出程序看程序,就会发现不一样的观点和角度。

原文链接:

转载于:https://my.oschina.net/daladida/blog/898824

你可能感兴趣的文章
给我的个人简历添加动态效果
查看>>
flutter Swiper+GridView
查看>>
macOs 安装过homebrew,但是再次执行 brew install 安装时候一直卡在 homebrew updating.......
查看>>
JavaScript开发中常用优秀插件,慢慢积累,会一直保持更新
查看>>
函数式编程尝试之俄罗斯方块
查看>>
「移动开发」iuap mobile玩转前端自动化构建
查看>>
05.web缓存
查看>>
LeetCode 53 Maximum Subarray 最大子数组
查看>>
函数 - Go 语言学习笔记
查看>>
Spring Security小教程 Vol 1. 最简单的应用
查看>>
C++ map的insert方法
查看>>
in和exists的区别与SQL执行效率分析
查看>>
MySQL数据库性能优化之硬件瓶颈分析
查看>>
GMP法规附录《计算机化系统》那些事儿
查看>>
阿里云服务器拓展数据盘
查看>>
NginX and Riak
查看>>
利用wsgen工具产生WSDL文档
查看>>
在Windows 2008 server 64位平台上可以使用旧版Acctinfo.dll以显示账户属性-Additional Account Info...
查看>>
线程中断的控制
查看>>
我的友情链接
查看>>