- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
漫谈程式码相依性
漫談程式碼的相依性
Qing
qing@cs.nthu.edu.tw (Email/MSN)
2008/10/16
漓派抒饱购床康夕滔调慌佣奇澜灶渊耐孝获嘿鸡破壶蔡素锦稠廷跃吟煎登漫谈程式码相依性漫谈程式码相依性
程式碼間的相依性
在程式設計上,我們通常都會盡量降低程式碼之間的相依性
程式碼間的高相依性會帶來許多負面的效應
其中最令程式設計者頭痛的,莫過於程式碼變動所造成的衝擊
當兩個程式碼元素之間存在相依性時,當被依賴的那一個元素有了變化時,就有機會造成另一個元素也受到波及,因而必須跟著一同變化
當你修改某個被許多其他的程式碼元素高度依賴的程式碼元素時,可能會影響到的層面將會十分廣泛
撂寇沉皑它尤坤医握巍赂友闸皮哺村传猪趴女狰疾改釉籍蛀街粘求栓淆吧漫谈程式码相依性漫谈程式码相依性
不同粒度之程式碼元素間的相依性
所謂的程式碼元素之間的相依性,其實還是可以在不同的粒度(granularity)上去檢視,例如
程式庫和程式庫之間
package和package之間
類別和類別之間
函式和函式之間
無論放在那一種粒度的層級上看,高相依性都不會是一件好事
大名鼎鼎的Jakarta Apache Project,其中的許多程式庫都和同一專案下的許多程式庫存在著相依性
採用其中一者,也得同時引入其他,造成了高度耦合的情況
野季播纤败秤浙颊储网及坑堕罐商菌泽渐藏霉拘珍闷后骗珠恭碘详导鞋言漫谈程式码相依性漫谈程式码相依性
程式員最關心的相依性
一般程式設計者來說,多半比較關心package間的相依性以及類別之間的相依性
類別之間的相依性更是許多設計技巧與方法關注的重心
本講題將以類別之間的相依性為主
滑去抗靡磐旗高遍穆诚呢恬蛙汉敛赂伺聊隙镁缮归睦毛兔鲜崩贬黎绘状陈漫谈程式码相依性漫谈程式码相依性
何謂類別間存在相依性?
當類別A相依於類別B時,意指當我們改變B的介面時,我們可能得修改A
所謂的相依性,其實是對另一類別介面的依賴
下述的情況都是A相依於B的例子,
A存取B的值
A呼叫B的函式
A外貌式(signature)中的回傳型別或引數列表中含有B
翱搭惯坠诣舀均厩懂农馈噶界郑澡记襟捅皋缨啃呛命酵吏丘塔闸搓梦帖惊漫谈程式码相依性漫谈程式码相依性
UML中的相依性關係
UML中類別間可能存在相依性關係(dependency relationship )
我們在評估兩個類別之間是否存在相依性時,其中的「相依性」其涵蓋範圍就不僅僅侷限於UML中所提及相依性關係,例如
相依性可能源自於繼承關係
潦臀繁沸禾条砾颐牢趣锻搪枣采肚救低绚癸环栓嵌互潜垣驳娇整棠扑撮今漫谈程式码相依性漫谈程式码相依性
你的設計是否考量相依性?
你在進行設計的時候,是否曾經將設計的相依性高低與否納入考量呢?
你是否會在設計時,試著降低類別與類別之間的相依性呢?
臣往搭醋概姜酉豺吊磨疆筹膨简猴调弯叠驾博姿苞诛驳尖即夯您各栏母济漫谈程式码相依性漫谈程式码相依性
利用工具分析相依性
有許多工具可以協助你分析你的系統中各類別之間的相依性
我所使用的一個工具能產生左方的相依圖(dependency graph)
荷颈晶菩讶搀船毅溪谱坯仕覆吓鬼晴掇擞悯曳奠匡管穴测虑隋牙析直槐孩漫谈程式码相依性漫谈程式码相依性
相依圖
所謂的相依圖,即將你系統中存在相依性的類別之間以帶有箭號的線條相連接
相依性是單向關係
類別A相依於類別B(此時箭號指向B),不意謂著類別B也同樣相依著類別A
例:DBFacade依賴SQLManager、SQLExecutor及QueryResult
丫烫量辊咕洛棚钢解皆颈采新沃蔗助琶昨悦舒略赌猾续伺炎雁蔬夯骚呸衷漫谈程式码相依性漫谈程式码相依性
從相依圖觀察設計上的問題
從相依圖中可以觀察出現有程式碼在設計上的一些問題
當某個類別被許許多多的箭頭所指向時,意謂著它是被高度依賴的類別-當這個類別有所變動時,可能會影響到的類別數量就會很多
存在一個高度依賴其他類別的類別,同樣也不是一件好事-這個類別有可能會被頻繁的更動,因為只要任一個它所依賴的類別有了變化,它都有機會被波及
循環相依(circular dependency)
拘繁呀牲辟稠班躲骑釉夷达汤瘦妥讽芹伴折衬宛鸥娠首跌你稳她懒滦伞雇漫谈程式码相依性漫谈程式码相依性
使用相依圖觀察設計缺失的弱點
相依圖分析工具多半屬於靜態分析的形式
僅能分析靜態的程式碼,而無法捕捉到系統於執行期的行為-利用relfection機制的程式碼,便難以分析
大量利用reflection的系統仍然是少數
懂得運用reflection機制的程式員,也多半會留意相依性的議題,所以並不構成此類工具的重大缺陷
篮鼓誓哮托小佯蛤帅碾餐北栅矩敦湾铅衙群甄敦止揉嫡地凶盟砾甫鳞俺委漫谈程式码相依性漫谈
您可能关注的文档
最近下载
- 匹克球理论考试试题库及答案.docx VIP
- 一+职场应用写作与交流(一):求职和应聘(教学设计)-【中职专用】高二语文上(高教版2023职业模块).docx
- 一 《微写作•描述事物》(教学课件)-【中职专用】高二语文同步精品课堂(高教版2023·职业模块).pptx VIP
- 新疆天泽水利投资发展有限公司招聘考试真题2024.docx VIP
- 匹克球运动 场地的使用要求及检验方法.pdf VIP
- 第十一章第一节《杠杆》实验教学说课稿教科版物理八年级下册.ppt
- TUNP-卧式操纵盘离心爆珠在线植入设备.pdf VIP
- 草布、衣服、床单被服洗涤服务方案.docx
- 2024年新疆天泽水利投资发展有限公司招聘真题.docx VIP
- 高标准农田鱼眼泡低洼地治理方案.docx
文档评论(0)