飞奔的小小番茄 申_宇
'͜'哈哈哈
关注数: 70 粉丝数: 36 发帖数: 816 关注贴吧数: 104
《代码里的世界观》第4章 耦合性是我们开发时一直无法避免的话题,这是为什么呢? 其实是因为耦合无处不在,他的形式多种多样,存在数据间、函数间。举个例子:当我们想听音乐时,要先给电器通电再选择想听的音乐,所以播放音乐对通电这一行为有依赖性,时函数之间的耦合。所以从这个例子也可以知道,耦合并不全是不好的,大部分的耦合是业务逻辑的要求,时为了满足正当的需求产生的。这样的耦合是我们需要的,所以对于耦合不要一概而论,只有那些考虑不足或缺乏经验造成的意料之外的耦合才是”坏的耦合“,需要我们去解耦的。 书中也列举了几个需要我们解耦的情况: 1、数据耦合:当一个模块直接使用另一个模块的内部数据或内部结构时,就发生了数据的耦合。 2、公共资源耦合:定义一个公共变量,多个模块访问。类似多线程访问公共资源,最容易出现死锁的问题,当复杂性提高根本无解了。所以尽量做到公共资源不可变,或者操作的途径有限可控 3、需求耦合:需求变化导致的耦合,在处理这个重构时目标应该是:能一次性解决可预见的问题,对一个具体的需求重构有足够的远见。 当我们决定动手解耦时,要明确解耦的原则: 1、模块逻辑独立而完整:我们可以通过属性或者构造函数、普通函数注入,如Person可以read,但是前提是带好眼镜,眼镜并不是所有人依赖或者所有行为所依赖的,所以我们可以通过普通函数在读书时将带好眼镜加入 2、模块之间通信的兼容性
1 下一页