架构整洁之道(三)-解耦合与复用
一、为什么要解耦合
前面说到,好的架构是要花费最少的人力成本来构建和维护软件。
对应到写代码上,有两个关键点。
- 维护的时候,每次修改尽可能少的代码。
- 维护的时候,每次修改或者添加功能,工程师要少做决策。
而要少改代码,少做决策,对应的两个解决方法。
- 复用。如果之前写的东西总是能复用,那维护的时候要写的代码就变少了。
- 解耦合。因为每次改动,工程师思考的都是在一小块范围内。工程师要考虑的就更少,就不用那么多决策。而如果不符合正交性,到处要改,我们就要花费更多的时间考虑这个,考虑那个。最后纠结了一天,加班都搞不完。
二、写代码时候的大方向
给程序的各个组件划分边界,模块化,解耦合。
尽可能将所有要变化的代码和不怎么需要变得代码分离开。
如图:
1)M1 和 M2 合作要实现某功能,应该想办法将业务流程变化多的代码尽可能赶到一小块代码中。
2) M1 和 M2 之间的交互点应该只有一个。
1.使用发送消息的方法。
2.如果是调用关系,就可能将调用别的模块的内容放到一个位置。
我认为,对可维护性而言,重构的时候,如果大方向上,是在缩小要修改的代码范围的,就是没有错的。
不要让经常要修改的内容发散开来。
尽可能使用数据表来表达含义。
《unix编程艺术》就说过,数据压倒一切。
使用数据表或者指针树。
你给我看文字,我感觉很不解。你给我看流程图,我感觉迷茫。你给我看数据表,我秒懂。
https://blog.csdn.net/renyongjian1994/article/details/117198867 这里的案例,就是使用数据的一种。
面向对象的说法,也叫多态。
使用小函数。
那些功能比较单一的小函数,才是生命周期最长的。
而且好复用呀。不涉及太多的流程啥的。
开发工具库。
有些通用的,弄个工具库来提升效率。复用性提升。节省人力成本。
比如字符串,网络操作。
比如像libevent那样的反应堆模式。
三、参考文献
《unix编程艺术》
《重构:改善既有代码的艺术》
《大话设计模式》
架构整洁之道(三)-解耦合与复用相关推荐
- 读书·架构整洁之道(原则篇)
十四年不修行,只读书,一年通幽.二十日不解碑,只静坐,一日看尽前陵碑 ----- 猫腻<择天记> 一.设计与架构究竟是什么? 二.SOLID设计原则 SRP:单一责任原则(Single R ...
- 阿里专家马飞翔:一文读懂架构整洁之道
淘系技术 马飞翔(泽畔) 读完需要 9 分钟 速读仅需 3 分钟 相信大家都非常清楚,如何编写可读性强的代码是一个合格程序员的必修课.我在之前的文章<谈谈什么是好的代码>中谈了一些自己对整 ...
- 架构整洁之道, 看这一篇就够了!
为什么80%的码农都做不了架构师?>>> 阿里妹导读:程序的世界飞速发展,今天所掌握的技能可能明年就过时了,但有些知识历久弥新,掌握了它们,你在程序的海洋中就不会迷路,架构思想 ...
- 一文读懂架构整洁之道(附知识脉络图)
程序的世界飞速发展,今天所掌握的技能可能明年就过时了,但有一些东西是历久弥新,永远不变的,掌握了这些,在程序的海洋里就不会迷路,架构思想就是这样一种东西. 本文是<架构整洁之道>的读书笔记 ...
- 再读《架构整洁之道》
时至今日,软件开发技术中最热闹的领域就是前端开发了,各种 xxxScript 语言,各种前端框架,以至于很长时间都没有再听过"面向对象"这种"古老"的词汇了.作 ...
- 架构整洁之道 pdf_代码有整洁之道,而架构同样有整洁之道
大家好!我是超级机器人 UltraBot,今天给大家一些值得阅读的开源书籍和项目. Etcd3 学习笔记 etcd 是一个分布式一致性键值存储,用于共享配置和服务发现.etcd 是 Go 编写,并使用 ...
- 高清架构整洁之道PDF下载
架构整洁之道高清PDF下载,请扫描如下二维码,支付3元.并加微信,发给你.谢谢.
- 架构整洁之道学习笔记
1.设计原则 1.1 SRP 单一职责原则 一个软件系统的最佳结构高度依赖于开发这个系统的组织的内部结构.任何一个软件模块都应该只对某一类行为者负责. 单一职责原则主要讨论的是函数和类之间的关系,但是 ...
- 架构整洁之道-学习笔记
高层架构&底层设计细节 架构"这个词往往使用于"高层级"的讨论中.这类讨论一般都把"底层"的实现细节排除在外.而"设计"一 ...
最新文章
- linux用户登陆后无法加在.bashrc
- PC人脸识别登录,出乎意料的简单
- RocketMQ架构模块解析
- poj 3101 Astronomy (java 分数的最小公倍数 gcd)
- poj 3264 Balanced Lineup RMQ问题 线段树
- 现代制造工程笔记05-表面工程技术
- ubuntu下如何查找某个文件的路径
- Android 数据库 SQLite
- SparkSQL报错:UnresolvedException: Invalid call to dataType on unresolved object, tree: 'bb
- 关于bacula网络备份软件的安装以及配置1
- lLinux编程大全
- 6、mysql与suse查看版本信息
- Redis异常JedisConnectionException:Read timed out解决笔记
- 家用nas的过去现在和未来--2008n年
- 《新牧场物语》攻略(转自百度)
- Android系统的启动流程
- 潜力巨大的柔性传感器为什么这么难发展?142位学者联手,发表这篇重磅论文!...
- 基于ERP的WMS系统解决方案
- 雅思阅读--读书笔记
- 奥维 最新 图源2023