低耦合,高内聚真的好吗?

首先来看看什么是“低耦合,高内聚”,这里简单介绍一下:内聚描述的是模块内的功能联系;从功能角度来度量模块内的联系,一个好的内聚模块应当恰好完成一个任务。耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

另外“高内聚低耦合”,也是软件工程中的概念,是判断设计好坏的标准,或许也可以说是设计软件所追求的目标,那么是否就是说离这个目标越近软件设计的就越好呢!如果从可维护性,可扩展性,后续架构来说,能达到这样的标准的确是最好的,目前这也是公认的,但是却很少听到他带来的副作用,下面就来讲讲。

搞破解、逆向工程的都知道,首先需要把一个完整的软件目标二进制代码逆向成为汇编语言所编写的程序,然而却无法逆向回他原来所编写的语言去,或许未来可以,但最起码现在不可以。说到这里,那么他跟“低耦合,高内聚”到底有什么联系呢!大家都知道,编译器在把源程序代码翻译为汇编语言的时候,其实整体结构是没有多大变化的,比如C中一个函数翻译成汇编后,大体上还是具有一个函数的形状的;那么重点就来了,如果源程序代码过度“高内聚低耦合”就会对逆向工程及破解等带来好处,源程序在翻译为汇编代码后大致结构上也会遵行“高内聚低耦合”,那么逆向起来是不是就比不遵行(当然有点极端)“高内聚低耦合”来的快一些,那对破解来说也是有很大好处的,如源程序的某个关键函数就是破解的关键点,如果源程序过度“高内聚低耦合”,是不是只要把这个关键函数解决了,破解就成功了;然而大多数软件破解中也是这么回事。如果源程序关键函数不是过度的“高内聚低耦合”,是不是破解就要费事一些,为什么呢!因为这个函数和其他较多地方有关联,破解就不一定很轻松,因为要考虑到很多点。

对于现在这个破解的世界里,大家一定不想自己辛辛苦苦搞的程序,几下就被人家给破了吧!因此个人觉得:“高内聚低耦合”也是有副作用的,并非想象中的完美。

时间: 2024-10-09 14:49:50

低耦合,高内聚真的好吗?的相关文章

面向对象三大特性五大原则 + 低耦合高内聚

面向对象三大特性五大原则 + 低耦合高内聚 面向对象的三大特性是"封装."多态"."继承",五大原则是"单一职责原则"."开放封闭原则"."里氏替换原则"."依赖倒置原则"."接口分离原则". 什么是面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结

《如何在struts+spring+hibernate的框架下构建低耦合高内聚的软件》

问题的提出我常常在思考一个问题,我们如何能设计出高水平.高质量的软件出来.怎样是高水平.高质量的软件?它应当是易于维护.易于适应变更.可重用性好的一个系统.如何做到这一点呢?答案当然是"低耦合.高内聚"了.低耦合就是软件在构造的时候,各个模块.各个功能.各个类都不会过度依赖于它周围的环境.只有这样,才能使我们的模块(功能.类)在周围发生变更时不受影响,做到易于维护和易于适应变更.正因为如此,也使它更易于重用到其它功能类似的环境中,提高了重用性.高内聚则使软件中的各个模块(功能.类)能够

C# 低耦合 高内聚

低耦合 loosely Coupling 松散的耦合关系=炮友 couple=夫妻 夫妻=法律约束.家庭.生活.财产.繁衍 炮友:吃喝玩乐,不会产生感情方面的依赖 内聚性 内聚性又称块内联系.指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.若一个模块内各元素(语名之间.程序段之间)联系的越紧密,则它的内聚性就越高. 内聚性匪类(低――高): 偶然内聚;逻辑内聚;时间内聚;通信内聚;顺序内聚;功能内聚; 1 偶然内聚: 指一个模块内的各处理元素之间没有任何联系. 2 逻辑内

3分钟Tips:用大白话告诉你什么是低耦合|高内聚

1.高内聚 首先我们来看看内聚的含义:软件含义上的内聚其实是从化学中的分子的内聚演变过来的,化学中的分子间的作用力,作用力强则表现为内聚程度高.在软件中内聚程度的高低,标识着软件设计的好坏. 我们在进行架构设计时的内聚高低是指,设计某个模块或者关注点时,模块或关注点内部的一系列相关功能的相关程度的高低. 例如:下单模块: 一般情况下,下单模块都会有如下的信息,订单的信息,产品的信息及谁下的单(买家信息).这是基本的,那么我们设计的时候就要把相关的功能内聚到一起.当然这是从大功能(下单管理)上来说

低耦合高内聚 - 不要把所有东西都放在 vuex中

我就举一个例子.比如,我想看电视,是否需要遥控器??请认真思考这个问题. 看似电视与"我"已经解耦了.然而,我需要通过遥控器去看电视,我的目的是看电视,但是我却需要依赖遥控器这个中间件.这就变相地将"我"与电视的依赖关系,变成了我与遥控器的依赖关系.虽然"我"与电视解耦了,但是"我"与遥控器却紧密联系在一起. 那么回到最初的问题,我的目的是看电视.我是否一定需要与电视解耦呢?答案是不一定!以此为基础,你可能会发明一个人可以直接

低耦合高聚合,封装原则

(oop)面向对象编程的一个关键原则之一就是封装,把暴漏的数据封装起来,尽可能的让对象管理它们自己的状态,因为过多的依存性会造成紧耦合性系统,使得任意一点小的改动都可能造成许多无法预料的结果.而数据封装机制是一个控制对象数据和状态强有力的方法,它对外部世界隐藏其内部细节,这就意味着每一个对象都应该尽可能少的了解系统的其他部分或者被其他部分所了解,这样一来一旦发生了变化,需要了解这一个变化的对象会比较少,因此变化也就相对来说便于改动. 内聚:内聚指的是一个模块内部各部分之间的关联程度,一个好的内聚

面向对象设计之高内聚、低耦合

内聚 内聚的含义:内聚指一个模块内部元素彼此结合的紧密程度 在面向对象领域,谈到"内聚"的时候,模块的概念远远不止我们通常所理解的"系统内的某个模块"这个范围,而是可大可小,大到一个子系统,小到一个函数,你都可以理解为内聚 里所说的 "模块".所以可以用"内聚"来判断一个函数设计是否合理,一个类设计是否合理,一个接口设计是否合理, 一个包设计是否合理,一个模块/子系统设计是否合理. 其次:"元素"究竟是什么

多聚合,少继承,低耦合,高内聚

面向对象的基本原则:多聚合,少继承.低耦合,高内聚. [高内聚.低耦合] 内聚:每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码. 耦合:模块与模块之间接口的复杂程度,模块之间联系越复杂耦合度越高,牵一发而动全身. 目的:使得模块的"可重用性"."移植性"大大增强 通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低 模块粒度: 『函数』 高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合)低 耦合:减少类内部,一个成员方法调用另一个成员方法

函数设计应做到低耦合,高内聚

最近,同项目组的一位师姐请产假了,由我接手她之前的部分版本的开发工作.在开发的过程中,我阅读了某个很古老的版本的程序代码,心生感触,想在这里啰嗦几句. 该版本中很多函数的调用关系都错综复杂,让人读起来非常的费劲.我用如下的图来形象化地表示这种函数之间的调用关系. 箭头的指向为调用关系,如"函数A"调用了"函数B"."函数C"."函数D"."函数E"."函数F",以此类推. 当函数之间的调