仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 877|回复: 8
打印 上一主题 下一主题

[学习教程] .Net架构计划:内聚与耦合

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:19:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的跨平台也当之无愧是一句谎言。
沙发
发表于 2015-1-18 12:52:33 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
透明 该用户已被删除
板凳
发表于 2015-1-24 15:28:32 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-1 21:35:26 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-7 17:11:29 | 只看该作者
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-22 20:00:28 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
活着的死人 该用户已被删除
7#
发表于 2015-3-7 01:59:05 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
变相怪杰 该用户已被删除
8#
发表于 2015-3-14 08:14:21 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
再见西城 该用户已被删除
9#
发表于 2015-3-21 02:14:49 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表