日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
代碼復(fù)用的幾點(diǎn)思考

復(fù)用可以說(shuō)是任何一個(gè)軟件企業(yè)都不能漠視的課題,因?yàn)閺?fù)用可能對(duì)軟件的開(kāi)發(fā)效能產(chǎn)生絕大影響,而開(kāi)發(fā)效能直接影響利潤(rùn),甚至生存。

創(chuàng)新互聯(lián)建站是專(zhuān)業(yè)的尚志網(wǎng)站建設(shè)公司,尚志接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行尚志網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

  但復(fù)用本身將增加當(dāng)前項(xiàng)目的成本,是一種以當(dāng)前投入來(lái)?yè)Q取遠(yuǎn)期收益的行為。與此同時(shí)遠(yuǎn)非所有代碼都可以復(fù)用,復(fù)用本身也有自己內(nèi)在的一些規(guī)律,讓我們來(lái)試做一些分析。

  從結(jié)論上來(lái)說(shuō),只有滿(mǎn)足下面兩條原則的程序,才可能真正的被復(fù)用,否則的話(huà)只能采用代碼級(jí)別的復(fù)用。

  ***條原則是,程序本身的職能非常獨(dú)立與業(yè)務(wù)層面基本無(wú)關(guān)聯(lián),是功能型的模塊(包)。

  代碼中的邏輯表述的是一種關(guān)聯(lián)性,當(dāng)這種關(guān)聯(lián)只在確定的方面存在的時(shí)候,通常我們可以切割出比較獨(dú)立的模塊,而這種模塊可以成為復(fù)用的基礎(chǔ)之一。這也就是常說(shuō)的【閉包】。

  這種復(fù)用有許多表現(xiàn)形式,但其本質(zhì)相同。

  比如JPEG的庫(kù),XML的庫(kù),比如我們常提到的組件或控件。

  在這類(lèi)復(fù)用中扮演關(guān)鍵角色的是一組接口,以及這組接口的基本使用規(guī)則。

  REP(重用發(fā)布等價(jià)原則),CRP(共同重用原則)中提到的重用都是這類(lèi)重用。

  第二條原則是,程序本身所描述的過(guò)程足夠抽象,同具體實(shí)現(xiàn)細(xì)節(jié)可以切的很開(kāi)。

  概念在衍化的過(guò)程中其內(nèi)含的細(xì)節(jié)會(huì)逐漸豐富,但又會(huì)共享某些共同的基本特征。很多時(shí)候邏輯要處理的是這種根本特征,而非細(xì)節(jié)。在這個(gè)時(shí)候,就需要抽象。

  好比人可以分為男人和女人,也可以分為老人,青年人和小孩。但因?yàn)橥瑢儆谌诉@一范疇,所以不管如何分類(lèi),必有共通之處。也正因此,某些針對(duì)【人】的規(guī)則或者價(jià)值標(biāo)準(zhǔn)是可以通用于所有人的,即是可以復(fù)用的。比如說(shuō)法律。大多時(shí)候,我們不需要指定分別針對(duì)于男人,女人的法律

  這種類(lèi)型的復(fù)用不是很好理解,我們用迭代器的例子來(lái)進(jìn)行進(jìn)一步的說(shuō)明。

  當(dāng)我們想遍歷一個(gè)容器的時(shí)候,從【頭到尾的循環(huán)】和【逐個(gè)遍歷】是屬于任何容器的,而同具體的容器無(wú)關(guān)。但如何從***個(gè)元素,遍歷到第二個(gè)元素則和容器的具體實(shí)現(xiàn)有關(guān)。把這種和具體實(shí)現(xiàn)細(xì)節(jié)無(wú)關(guān)的邏輯提取出來(lái)的過(guò)程,也即抽象的過(guò)程。只有能做到這種程度抽象,非獨(dú)立的功能性的代碼才可能真正的做到被重用。

  《設(shè)計(jì)模式》這本書(shū)有個(gè)副標(biāo)題,叫《可復(fù)用面向?qū)ο筌浖幕A(chǔ)》?;A(chǔ)這個(gè)詞的意指與上述說(shuō)明相同。

  由第二條原則而產(chǎn)生的復(fù)用的形式可以是,設(shè)計(jì)模式與框架。歷史上的MFC的文檔視圖結(jié)構(gòu)就是一個(gè)典型代表。

  一個(gè)比較典型的是近來(lái)很受關(guān)注的Map-Reduce的函數(shù)式編程方法,據(jù)說(shuō)這種方法在Google被用來(lái)支持并行計(jì)算。--參見(jiàn)《軟件隨想錄》

  假設(shè)說(shuō)某一功能的主要部分已經(jīng)實(shí)現(xiàn),比如排序。這時(shí)候已經(jīng)實(shí)現(xiàn)的部分是既定算法,可能是選擇排序,也可能是插入排序。但對(duì)于排序而言,對(duì)兩個(gè)數(shù)值進(jìn)行比較的部分則依賴(lài)于被比較的對(duì)象,需要被靈活指定。這也就意味著重用排序的實(shí)現(xiàn),等于實(shí)現(xiàn)兩段代碼的對(duì)接,實(shí)現(xiàn)一部分代碼,但另一部分則由用的人在使用的時(shí)候指定。

  這種方法可以更好的支持并行計(jì)算的原因在于,他可以把實(shí)現(xiàn)中的可優(yōu)化部分分割開(kāi)來(lái)。對(duì)于查詢(xún)而言,如何遍歷所有數(shù)據(jù)是可以并行優(yōu)化的。

  如果上述兩條原則都無(wú)法滿(mǎn)足,那么為了達(dá)到提升效能的目的,就需要做以實(shí)現(xiàn)為基礎(chǔ)的代碼級(jí)別的復(fù)用,即完全不做抽象,直接復(fù)用代碼片段---也許這反倒是應(yīng)用的最為廣泛的復(fù)用方法。

  很多人恐怕已經(jīng)習(xí)慣了解決某個(gè)具體問(wèn)題前,先到codeproject.com或者codeguru.com上確認(rèn)一下有沒(méi)有參考代碼。如果不論這種方法的諸多缺點(diǎn),比如:版權(quán)問(wèn)題,引起代碼風(fēng)格混亂等等,這種方法的現(xiàn)實(shí)意義仍是比較巨大。其正面意義可以體現(xiàn)為下面幾個(gè)方面:

  可執(zhí)行的代碼片段可以清楚的告訴我們類(lèi)庫(kù)API等等的具體用法,進(jìn)而縮短我們掌握領(lǐng)域知識(shí)的時(shí)間。在具體項(xiàng)目中使用某種語(yǔ)言,完全從零開(kāi)始來(lái)完成某項(xiàng)工作的機(jī)會(huì)非常***,我們更多的時(shí)候要依賴(lài)于某些通用的領(lǐng)域知識(shí)。而通過(guò)幫助文檔來(lái)學(xué)習(xí)類(lèi)庫(kù)等的使用方法效率相對(duì)低下,而這種可執(zhí)行的片段代碼則精準(zhǔn),且具體的描述了類(lèi)庫(kù)等的某一使用方法,使程序員可以更快上手。

  可執(zhí)行的代碼片段可以是高質(zhì)量的。如果我們承認(rèn)代碼的質(zhì)量是要持續(xù)提高,那么這類(lèi)代碼片段,無(wú)疑的可以擁有比剛剛寫(xiě)成的代碼更高的質(zhì)量。因此這類(lèi)代碼對(duì)生產(chǎn)率的貢獻(xiàn)還不僅只與提高編碼速度。

  如果真的想在組織中使用這種復(fù)用方法的話(huà),一個(gè)關(guān)鍵點(diǎn)是要控制可執(zhí)行代碼片段的規(guī)模。


當(dāng)前名稱(chēng):代碼復(fù)用的幾點(diǎn)思考
文章位置:http://www.5511xx.com/article/djiseep.html