|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。高内聚和低耦合一向是面向工具计划前面埋没的两个计划中心准绳,那末内聚与耦合究竟是个甚么观点呢?
1、内聚
高内聚暗示某个特定的软件模块——不管是一个子程序、一个范例仍是一个类库,都应当完成一系列极其相干的功效。换句话说,内聚暗示统一个范例中分歧办法、统一个类库中的分歧函数大概统一个办法中的分歧操纵所表达的逻辑之间的间隔。
若你检察一下内聚在化学范畴中的界说,定会加倍分明地舆解软件中内聚的寄义。在化学界中,内聚是物资的一种物料属性,暗示物体平分子之间的吸引才能。
内聚的权衡尺度是从低到高,内聚越高申明软件计划得越好。
高内聚的模块意味着高的可保护性和可重用性,由于这些模块的内部依附很少。低内聚则让人难以了解范例的计划企图,简单招致呈现坚固,易碎的软件。低内聚的模块也会在各个模块中留下良多依附,让计划变的固执且高粘度(坚固,易碎的软件,高粘度等成绩请检察本站:三个表示你的架构计划入手下手走下坡路的旌旗灯号)。
代内聚的计划会使模块(如范例)的职责(如办法)相互干系松懈,乃至是在完成一些绝不相干的操纵。在实践中,高内聚准绳倡议我们创立尽量专门的范例,包括较少的办法,用来完成逻辑上相干的操纵。若办法之间的逻辑间隔有所增添,那末应当拆分红别的的范例。
WardCunningham(一名根限编程的前驱)为内聚给出了一个简便有用的界说。在他看来,假如修正了模块A,且不会影响到模块B,那末A和B两个模块就有了充足的内聚,值得在体系中利用。
另有一句话,一样来自WardCunningham,可用来牢固后面提到的内聚观点。WardCunningham倡议,模块(如一个范例)的内聚上下与其承当的职责几成正比干系。我们对此深表赞成。
与内聚严密相干的是单一职责准绳(SingleResponsibilityPrinciple,SRP)。请人人自已查找单一职责准绳观点。
2、耦合
耦合是用来器度两个软件模块,比方,范例,函数或类库之间的依附水平。耦合的一个十分出色的形貌一样来自WardCunningham:若每次修正模块A时都要修正模块B,那末A和B这两个模块就是耦合的。
换句话说,固然模块B没有间接或逻辑上与模块A的修正相干,但由于两者之间存在依附,以是B不能不随之调剂,不然代码将没法编译。
耦合的权衡尺度从低到高,耦合越低申明软件计划得越好。
低耦兼并不是说你的模块应当与其他模块完整阻遏。模块之间明显必要通讯,不外通讯应当依附于一系列计划优秀且不容易改动的接口。每一个模块都应当在无需懂得另外一个模块外部完成细节的情形下与之优秀共同。
相反地,高耦合会拦阻测试历程、下降代码重用性并影响代码的了解。高耦合也是招致坚固、易碎软件的一个次要缘故原由。
低耦合和高内聚不共戴天。若体系满意了这两个前提,那末一般来讲该体系已满意了高可读性,高可保护性,易于测试和易于重用的请求。
低耦合和高内聚最后是用来引导布局化计划的,因而它其实不仅仅合用于面向工具计划中。不外即便在面向工具场景中,二都也有着十分主要的地位。一个好的面向工具计划一样必要满意低耦合和高内聚的准绳,即功效完整的工具(高内聚)之间经由过程流动的接口举行交互(低耦合)。
一个有助于完成低耦合和高内聚的准绳是分别存眷点(SeparationofConcerns,SoC),人人能够存眷本站的下一篇文章。我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。 |
|