低耦合与代码复用率相互矛盾

xiaoji 2016-01-20 11:48:33
为了提高代码复用率,我们通常会将一些基础类(例如链表或堆栈)封装到一个或若干个基础类库里面,其他类库会调用这些基础类。
按软件高内聚低耦合的原则,一个类库应该是高内聚低耦合,减少与其他类库或包的联系,这就与代码复用率相互矛盾了。代码复用率要求将一些独立的类封装到一个库中,强调复用性;而低耦合则要求减少类库或包之间的联系,尽量将功能在一个类库中实现;因此低耦合和代码复用率之间存在一定程度的矛盾。

一些人或许会觉得代码复用之间拷贝代码或类就可以了,这会造成一些问题,先不说拷贝代码本身容易出现问题,代码多次拷贝也会造成代码维护困难,例如你将某个基础类多次拷贝,当发现这个类存在bug时,就需要对各个拷贝都进行修改,如果一些代码已经发布,维护就更困难了。
...全文
3700 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxyOOOO 2016-08-18
  • 打赏
  • 举报
回复
高内聚低耦合,能提高软件复用。但依赖不可避免(比方这里的库依赖)。这种依赖可以方便被某种方法解耦就可以(低耦合),不矛盾。
dracularking 2016-08-08
  • 打赏
  • 举报
回复
我觉得楼主总结得挺好的,但有一些自己的看法 既然叫扩展库和基础库,说明这两者之间的联系已经是不可避免的了,耦合也就不可避免,这个时候能做的也只是尽量将耦合度降到最低了
wrong1111 2016-08-06
  • 打赏
  • 举报
回复
知道什么叫权衡么? 什么都是相对的。只是针对某个场景,做出最有利的选择。。
smallcrocodile 2016-05-11
  • 打赏
  • 举报
回复
我不说,只看看
silenccce 2016-04-19
  • 打赏
  • 举报
回复
何为低耦合?你使用了某个类库的扩展接口,然后类库框架内部改变了,但是接口没变,你能察觉到它内部做了修改吗?这叫高耦合?楼主你还是不懂啊。
xiaoji 2016-01-21
  • 打赏
  • 举报
回复
低耦合和可扩展性也存在一定的矛盾,为了提高可扩展性,我们通常会留下尽可能多了扩展接口,这也违背了低耦合原则。 当我们在扩展库中继承了基础库中的某个类,并扩展功能时,扩展库和基础库之间的耦合度很高,也与低耦合原则不符。 我觉得耦合度不是越低越好,当然耦合度低了肯定好维护,但是会牺牲代码复用率、可扩展性等特性。
适合人群:具有JAVA编程基础,但是无法写出优雅程序的程序员,希望在系统设计、代码开发上有所提升的人群学习计划:1、建议每天学习3节课,2天就可以学完 2、利用1个小时的时间集中学习,可一口气学完。 3、课后要进行练习,并在工作中加以利用。课程目标:快速掌握7大设计原则,写出高质量的优雅代码课程简介:为什么要学习本门课程?1、程序编写没有原则,按照逻辑胡乱堆砌代码,导致代码冗余,耦合性高,难以维护。2、不知道程序设计应该遵从哪些原则,如何写出优雅代码。3、不知道怎样提高程序的可重用性、可读性、扩展性、可靠性,让程序高内聚而耦合。 课程特点:1、简单、快速,结合理论和UML、代码进行讲解,学起来不累。2、完整涵盖7大设计原则:①单一职责原则 ②接口隔离原则 ③依赖倒置原则 ④里式替换原则 ⑤开闭原则 ⑥迪米特法则 ⑦合成复用原则3、短小精悍,语言朴实,没有废话,直击重点4、资料齐全,可随时复习和查阅。 主体大纲:7大设计原则1-引言7大设计原则2-单一职责原则7大设计原则3-接口隔离原则7大设计原则4-依赖导致原则7大设计原则5-里式替换原则7大设计原则6-开闭原则7大设计原则7-迪米特法则7大设计原则8-合成复用原则7大设计原则9-总结语 授课风格:1、一线大厂架构师授课2、短小精悍,语言朴实,没有废话,直击重点 配套福利:1、高清正版PDF课件 常见问题:问:是否晦涩难懂,太过于理论化答:采用平实的语言,结合简单的UML推行,再加上代码进行讲解。 简单易学问:是否啰嗦冗长,学起来费时间。答:精简通俗,直击重点,集中时间1小时学完。

3,405

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 设计模式
社区管理员
  • 设计模式
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧