问题:

有没有人质疑过这个设计思想?

包括前后端分离,本质上不都是一种「分门别类、统筹规划」的管理思想嘛。

最近在看《翻转式学习》,作者在里面吐槽了说真正的教育根本就不应该分学科和科目。(我感觉这个想法太高深了,没敢往下想)

而且最近受All in one影响蛮大的,忽然就想到了在软件开发中的「低耦合、高内聚」的设计思想。

凡事有利必有弊嘛,还请大家可以理性讨论一下啦!

回答:

作者:韦易笑

举个例子就明白了

低内聚,高耦合:

高内聚,低耦合:

你觉得谁更好维护?更容易调整?出错了更容易排查?

所以写程序需要起码的审美,漂亮和丑陋都分不清的话,怎么设计复杂系统呢?

--

PS:关于你提到的 all in one 的观点和 “高内聚,低耦合”是不是矛盾的问题?

一点不矛盾,all in one 说的就是 “高内聚”的思想,只是它没说完另外一面“低耦合”

再举个例子,原本 PC 插在主板不同位置的各个设备,到了手机时代用 all in one 的方式做成了 soc,降低了成本,提升了性能,但是仔细看它内部:

手机 SoC 内部各个模块之间的协同,何尝不是高内聚低耦合的设计?再把镜头拉远点,站在整块主板的角度,把 SoC 看作一个高内聚的整体的话,这块 all in one 的 SoC 正是通过精密的设计和良好的封装从而对外层(主板上其他设备)提供了低耦合的接口,降低了手机厂商的生产技术门槛:

这就是 “高内聚”和 “低耦合”互相转化的关系,所以这其实是一枚硬币的两面,并且可以一直循环递归下去,视角不同罢了。

对比低内聚高耦合的情况,很多人更容易犯低内聚低耦合的错误,写个 1+1=2 都要先建立个文件弄个 interface ,再建一个文件做实现的类,里面放个runable 的匿名类,外面再套一个静态方法 GetInstance,封装是多了,但空洞无物,内部实现繁琐,外部调用啰嗦(虽然也是低耦合),所以还得加一句,保持简单性和可拆分性。

高类聚、低耦合真的就好么?相关推荐

  1. RecycleViewAdapter高类聚低耦合,根据level进行局部刷新

    一个专注于RecyclerView优雅刷新(接管资源和数据源来代理进行数据处理).高灵活.低耦合.健壮性以及高效性的轻量级MVP模式库,支持大多数Adapter 架构 特点 使用简单快捷,支持大多数A ...

  2. 怎么去理解高类聚低耦合这种概念

    内聚其实是指工作职责的内聚 是对软件系统中元素职责相关性和集中度的量度 耦合是指软件系统中各元素的关联性和牵制程度 是对某元素与其它元素之间的连接.感知和依赖的量度 内聚和耦合本身也是有冲突关系的 一 ...

  3. 高类聚与低耦合(初步认识)

    低耦合和高内聚是我们所追求的,低耦合是指一个程序中各个模块之间的联系少和相互依赖程度低,一个模块实现具体实现一个功能,各个类之间联系越少,相互依赖程度越低.共用或者传输的参数越少,则它们之间的耦合度越 ...

  4. CPPDay05 C的静态成员,类的静态成员,单例模式,静态成员函数,继承(面向对象三大特性,高类聚,低耦合),继承方式(private,protected,public)多重复杂继承,虚继承

    目录 0x00 C中的静态成员: 0x01类的静态成员: 0x02单例模式: 0x03静态成员函数: 0x04继承: 0x05继承方式: 0x06多重复杂继承: 0x07虚继承: 0x00 C中的静态 ...

  5. java中的高内聚和低耦合和接口的简单理解

    ## *浅谈java编程语言中高内聚和低耦合**先说低耦合中一个例子: 假设你的一个web应用包含50个函数<或者说方法> 你改动一个函数,其他函数正常运行工作...这就是低耦合.高内聚: ...

  6. 小菜学设计模式——高内聚、低耦合

    2019独角兽企业重金招聘Python工程师标准>>> 背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录 ...

  7. python模块化设计耦合度_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

  8. 你的代码是否按照高内聚、低耦合的原则来设计的?

    我们一直强调软件开发中要按照高内聚.低耦合的设计原则来做代码结构设计.c语言和c++不同,c语言面向过程.c++面向对象. 真正的项目中,要对业务升级,原来的业务函数需要保留,要保证老的功能继续维持, ...

  9. 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

最新文章

  1. HTML DOM 节点
  2. [开源]KJFramework.Message 智能二进制消息框架 -- 性能提升
  3. CocoaPods版本升级
  4. 李开复:天才将占领创业领域
  5. “天猫化”的考拉,还是考拉吗?
  6. Java多线程总结之线程安全队列Queue
  7. OpenCV-图像处理(04、图像操作)
  8. ZeptoLab Code Rush 2015 B. Om Nom and Dark Park DFS
  9. html5 选择收货地址,基于layer.js实现收货地址弹框选择然后返回相应的地址信息...
  10. postman并发测试_PostMan接口压力测试
  11. ue4风格化材质_风格化材质 - 游戏蛮牛 - Unreal中文翻译用户手册
  12. 【化学信息学|机器学习】分子亲和力(Kd,Ki,IC50)
  13. SpringBoot自动装配的魔力
  14. quick框架之MyApp详解
  15. 【CRC笔记】CRC-16 IBM-SDLC C语言实现
  16. mysql 之 FLUSH TABLES
  17. 主合同与补充合同的区别有哪些?
  18. 【WebGIS】二、基于Openlayers实现地图的加载与显示
  19. python实战:22个Python迷你项目(附源码)【建议收藏】
  20. [培训-无线通信基础-3]:窄带无线信道(大小尺度衰落、多普勒效应)

热门文章

  1. android 无限旋转动画,Android 属性动画之无限循环缩放动画,旋转动画
  2. TCP 和 UTP 有什么区别?
  3. mapboxgl 飞线
  4. MayaDay2:吸附点线面的功能
  5. Android instrumented test no tests found
  6. 学生党用什么蓝牙耳机最好?四款好用又便宜的蓝牙耳机推荐
  7. Python爬虫设计思路
  8. 创建user应用与User表
  9. 介绍计算机网络的作文,关于网络的作文:网络_600字
  10. mysql 无法启动14001_Mysql服务无法启动,解决办法。