日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

开发与重构

發(fā)布時(shí)間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发与重构 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

軟件開(kāi)發(fā)過(guò)程主要追求的是高效、易于維護(hù)。
高效開(kāi)發(fā)體現(xiàn)了代碼的復(fù)用率即開(kāi)發(fā)效率,是為了縮短開(kāi)發(fā)周期。
易于維護(hù)體現(xiàn)了代碼的重構(gòu)效率,是為了縮短維護(hù)周期。

編程語(yǔ)言,從C到C++,實(shí)現(xiàn)了從函數(shù)復(fù)用,到類復(fù)用。其實(shí)編程語(yǔ)言的更新?lián)Q代過(guò)程,就是提高代碼復(fù)用率的過(guò)程,即解決開(kāi)發(fā)效率的問(wèn)題。
注:還有一些其他類型的技術(shù),都是為復(fù)用而生,如動(dòng)態(tài)庫(kù),組件等。

開(kāi)發(fā)語(yǔ)言偏向于解決開(kāi)發(fā)效率的問(wèn)題,而重構(gòu)效率和開(kāi)發(fā)效率幾乎是一對(duì)成反比的變量。例如,使用C++開(kāi)發(fā)時(shí),如果只考慮提高代碼復(fù)用率,那么在需求改變的時(shí)候,已有的架構(gòu)很難適應(yīng)新的需求,重構(gòu)的任務(wù)很可能變得艱巨。C++開(kāi)發(fā)相對(duì)于C開(kāi)發(fā)過(guò)程,潛在地會(huì)有更多的代碼重構(gòu)工作。

例如,類的繼承本來(lái)是一種提高復(fù)用性的手段,但是如果這種方法被濫用,會(huì)導(dǎo)致類的繼承關(guān)系十分復(fù)雜,且十分固定,類與類之間的耦合性高。一旦產(chǎn)生修改需求,將會(huì)帶來(lái)巨大的工作量。所以,有的特性并不是使用的越多越好,而是需要使用者根據(jù)實(shí)際情況制定使用方案。在一些需求固定的地方,如windows的界面開(kāi)發(fā)框架,結(jié)構(gòu)固定,運(yùn)行方式百年不變,就特別適合用C++進(jìn)行封裝,特別是適合使用繼承、多態(tài)等特性。

為什么需要重構(gòu)?重構(gòu)的動(dòng)機(jī)是什么?

根據(jù)二八定律,軟件代碼中,有20%的代碼占用了80%的軟件運(yùn)行時(shí)間。我們稱20%的代碼成為熱點(diǎn)代碼,80%的為冷代碼。
隨著需求的改變,某些功能模塊/類的使用頻率是會(huì)隨之變化的,即有的代碼變成冷代碼,有的代碼變成熱代碼。功能模塊的使用頻率發(fā)生改變,會(huì)導(dǎo)致兩方面的問(wèn)題:
1.開(kāi)發(fā)效率降低。
新的需求如果繼續(xù)使用已有的模塊,而已有模塊的實(shí)現(xiàn)方式下的代碼重用率不是很高,這就導(dǎo)致在新需求下的開(kāi)發(fā)效率會(huì)降低。
例如,為了實(shí)現(xiàn)相同的功能,未使用訪問(wèn)者設(shè)計(jì)模式編寫的代碼,在使用頻率高了以后,相對(duì)于使用訪問(wèn)者設(shè)計(jì)模式下編寫的代碼更多,代碼的重用率更低。首先在開(kāi)發(fā)階段就會(huì)導(dǎo)致開(kāi)發(fā)效率變低,因?yàn)橐獙懜嗟拇a。其次在后續(xù)的重構(gòu)時(shí),會(huì)因?yàn)橄嗤拇a在多個(gè)地方分布,多個(gè)地方都要修改,導(dǎo)致修改的工作量更大。
2.運(yùn)行效率降低。
有的模塊的初始實(shí)現(xiàn),可能并沒(méi)有做很好的優(yōu)化。在訪問(wèn)率提高后,效率問(wèn)題將逐漸被放大。這時(shí)就會(huì)產(chǎn)生重構(gòu)需求。如模塊間的通信效率,數(shù)據(jù)解碼效率等,需要更加高效的數(shù)據(jù)結(jié)構(gòu)與算法來(lái)重構(gòu),以提高運(yùn)行效率。

軟件行業(yè)的任何層面都存在重構(gòu)。需求變化越頻繁的部分,重構(gòu)越多。需求越固定的部分,重構(gòu)越少。

如何理解設(shè)計(jì)模式?設(shè)計(jì)模式是為了解決什么問(wèn)題?

使用設(shè)計(jì)模式是為了從軟件開(kāi)發(fā)的一開(kāi)始,就通過(guò)人為分析現(xiàn)有需求,預(yù)測(cè)未來(lái)需求,對(duì)軟件各個(gè)功能模塊進(jìn)行最優(yōu)化設(shè)計(jì),以期減少當(dāng)前開(kāi)發(fā)工作量和應(yīng)對(duì)需求變動(dòng)工作量的目的。如果一個(gè)項(xiàng)目急切開(kāi)展起來(lái),雖然初期開(kāi)發(fā)速度快,但是可能會(huì)對(duì)后期軟件的維護(hù)帶來(lái)麻煩。
設(shè)計(jì)模式只是解決上述問(wèn)題的方法和經(jīng)驗(yàn)。應(yīng)從代碼重用即開(kāi)發(fā)效率和運(yùn)行效率的角度出發(fā),理解每一種設(shè)計(jì)模式。
另外使用何種設(shè)計(jì)模式,由具體需求和預(yù)期的需求決定。使用設(shè)計(jì)模式有一定的使用成本,包括時(shí)間成本和過(guò)度設(shè)計(jì)的風(fēng)險(xiǎn),要謹(jǐn)慎使用。

量化

如果能夠?qū)④浖_(kāi)發(fā)本身的一些指標(biāo)進(jìn)行量化,并且在量化后進(jìn)行最優(yōu)計(jì)算,最終實(shí)現(xiàn)自動(dòng)化的軟件設(shè)計(jì)模式的話,程序員就可以將更多的精力放在業(yè)務(wù)實(shí)現(xiàn)上,而非代碼維護(hù)上。自動(dòng)化的軟件設(shè)計(jì)將允許人們?cè)O(shè)計(jì)規(guī)模更大、功能更復(fù)雜的軟件系統(tǒng),真正實(shí)現(xiàn)軟件生產(chǎn)力的提高。

總結(jié)

以上是生活随笔為你收集整理的开发与重构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。