国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

重構(gòu)改善既有的代碼設(shè)計(jì)(重構(gòu)原則)

XUI / 3057人閱讀

摘要:難以通過(guò)重構(gòu)手法完成設(shè)計(jì)的改動(dòng)先想像重構(gòu)的情況。何時(shí)不該重構(gòu)現(xiàn)有代碼根本不能正常運(yùn)作。現(xiàn)在,我可以修改這個(gè)子類(lèi)而不必承擔(dān)午一中影響另一處的風(fēng)險(xiǎn)。

重構(gòu):對(duì)軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整,目的是再不改變軟件的可觀察行為的前提下,提高其可理解性,降低其修改成本。
兩頂帽子

添加新功能 添加新功能時(shí)不應(yīng)該修改既有代碼,只管添加新功能,通過(guò)測(cè)試
重構(gòu) 重構(gòu)時(shí)你就不能再添加功能,只管改進(jìn)程序結(jié)構(gòu),此時(shí)你不應(yīng)該添加任何測(cè)試,只在絕對(duì)必要(用以處理接口變化)時(shí)才修改測(cè)試

為何重構(gòu)

重構(gòu)改進(jìn)軟件設(shè)計(jì)

重構(gòu)使軟件更容易理解1

重構(gòu)幫助找到bug

重構(gòu)提高編程速度2

何時(shí)重構(gòu)

三次法則

第一次做某件事時(shí)只管去做;第二次做類(lèi)似的事會(huì)產(chǎn)生反感第三次再做類(lèi)似的事,你就應(yīng)該重構(gòu)。(事不過(guò)三,三則重構(gòu))

添加功能時(shí)重構(gòu)

修補(bǔ)錯(cuò)誤時(shí)重構(gòu)

重構(gòu)的難題

數(shù)據(jù)庫(kù)重構(gòu)

修改接口

讓舊接口調(diào)用新接口,當(dāng)你要修改某個(gè)函數(shù)的名稱(chēng)時(shí)請(qǐng)留下舊函數(shù),讓它調(diào)用新函數(shù)。千萬(wàn)不要復(fù)制函數(shù)實(shí)現(xiàn),那會(huì)讓你陷入重復(fù)代碼的泥淖中難以自拔。你還應(yīng)該使用java中depreciation注解,將舊接口標(biāo)記為@deprecated

難以通過(guò)重構(gòu)手法完成設(shè)計(jì)的改動(dòng)

先想像重構(gòu)的情況。考慮選設(shè)計(jì)方案時(shí),我會(huì)問(wèn)自己:將某個(gè)設(shè)計(jì)重構(gòu)為另一個(gè)設(shè)計(jì)的難度又多大?看上去很簡(jiǎn)單,我就不必太擔(dān)心選擇是否得當(dāng),于是我就會(huì)選擇最簡(jiǎn)單的設(shè)計(jì),哪怕他不能覆蓋所有潛在的需求也沒(méi)關(guān)系,但如果預(yù)先看不到簡(jiǎn)單的重構(gòu)辦法,我就會(huì)在設(shè)計(jì)上投入更多的力氣。

何時(shí)不該重構(gòu)
現(xiàn)有代碼根本不能正常運(yùn)作。重構(gòu)之前,代碼必須起碼能夠在大部分情況下正常運(yùn)作 如果項(xiàng)目已近最后的期限,你也應(yīng)該避免重構(gòu),如果項(xiàng)目已經(jīng)非常接近最后期限,你不應(yīng)該再分心于重構(gòu),因?yàn)橐呀?jīng)沒(méi)有時(shí)間了。重構(gòu)能夠提高生產(chǎn)力如果最后你沒(méi)有足夠時(shí)間,通常就表示你其實(shí)早該進(jìn)行重構(gòu)。

重構(gòu)與設(shè)計(jì)

如果選擇重構(gòu),問(wèn)題的重點(diǎn)就改變了,你仍然做預(yù)先設(shè)計(jì),但是不必一定找出正確的解決方案,此刻的你只需要得到一個(gè)足夠合理的解決方案就夠了。

有了重構(gòu),你就可以通過(guò)一條不同的途徑來(lái)應(yīng)付變化帶來(lái)的風(fēng)險(xiǎn)。你仍舊需要思考潛在的變化,仍舊需要考慮靈活的解決方案。但是你不必再主意實(shí)現(xiàn)這些解決方案而是應(yīng)該問(wèn)問(wèn)自己:"把一個(gè)簡(jiǎn)單的解決方案重構(gòu)成這個(gè)靈活的方案又多大難度?"如果答案是“相當(dāng)容易”,那么就只需要實(shí)現(xiàn)目前的簡(jiǎn)單方案就行了。

間接層和重構(gòu)(間接層的價(jià)值)

允許邏輯共享

比如說(shuō)一個(gè)子函數(shù)再兩個(gè)不同的地點(diǎn)被調(diào)用,或超類(lèi)中的某個(gè)函數(shù)被所有子類(lèi)共享

分開(kāi)解釋意圖和實(shí)現(xiàn)

你可以選擇每個(gè)類(lèi)和函數(shù)的名字,這給你一個(gè)解釋自己意圖的機(jī)會(huì)。類(lèi)或函數(shù)內(nèi)部則解釋實(shí)現(xiàn)了這個(gè)意圖的做法。如果類(lèi)和函數(shù)內(nèi)部又以更小單元的意圖來(lái)編寫(xiě),你所寫(xiě)的代碼就可以描述其結(jié)構(gòu)中的大部分重要信息

隔離變化

很可能我在兩個(gè)不同的地點(diǎn)使用同一對(duì)象,其中一個(gè)地點(diǎn)我想改變對(duì)象行為,但如果修改了它,我就要冒同時(shí)影響兩處的風(fēng)險(xiǎn)。為此我做出一個(gè)子類(lèi),并在需要修改出引用這個(gè)子類(lèi)。現(xiàn)在,我可以修改這個(gè)子類(lèi)而不必承擔(dān)午一中影響另一處的風(fēng)險(xiǎn)。

封裝條件邏輯

對(duì)象有一種奇妙的消息機(jī)制:多態(tài)消息,可以靈活而清晰地表達(dá)條件邏輯。將條件邏輯轉(zhuǎn)化為消息形式,往往能降低代碼的重復(fù),增加清晰度并提高彈性。

  • 什么是難以理解的程序:難以閱讀的程序,難以修改;邏輯重復(fù)的程序,難以修改;添加新行為時(shí)需要修改已有的代碼的程序難以修改帶;復(fù)雜條件邏輯的程序,難以修改。 ?

  • 我們希望程序:容易閱讀;所有邏輯都旨在唯一地點(diǎn)指定;新的改動(dòng)不會(huì)危機(jī)現(xiàn)有行為;盡可能簡(jiǎn)單表達(dá)條件邏輯。 ?

  • 文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/72469.html

    相關(guān)文章

    • 重構(gòu)改善有的代碼設(shè)計(jì)代碼的壞味道)

      摘要:壞的味道指的是應(yīng)該被修改,被重構(gòu)的代碼,不具有可讀性,復(fù)用性,判斷邏輯復(fù)雜,冗余代碼。它們通常能指出代碼用途和實(shí)現(xiàn)手法之間的語(yǔ)義距離。把所有和這個(gè)變量相關(guān)的代碼新建一個(gè)類(lèi)放入。但這往往不夠,請(qǐng)反復(fù)運(yùn)用將某些行為移入類(lèi),直到者的協(xié)議一致為止。 壞的味道:指的是應(yīng)該被修改,被重構(gòu)的代碼,不具有可讀性,復(fù)用性,判斷邏輯復(fù)雜,冗余代碼。應(yīng)該使用各種重構(gòu)的手法去改變它! Duplicated...

      Code4App 評(píng)論0 收藏0
    • 重構(gòu)-改善代碼設(shè)計(jì)(二) --重構(gòu)原則

      摘要:改進(jìn)代碼設(shè)計(jì)的一個(gè)重要原則就是消除重復(fù)代碼使軟件更容易被理解優(yōu)秀的代碼能夠讓接收你代碼的付出更少的學(xué)習(xí)成本。重構(gòu)更容易找到重構(gòu)能加深對(duì)代碼的理解。可以重構(gòu)的情況添加功能時(shí)可以重構(gòu)。說(shuō)明你沒(méi)有發(fā)現(xiàn)代碼的錯(cuò)誤。需要重構(gòu)復(fù)審代碼時(shí)可以重構(gòu)。 為何重構(gòu) 重構(gòu)不是銀彈,但是幫助你達(dá)到以下幾個(gè)目的 改進(jìn)軟件設(shè)計(jì) 不良的程序需要更多的代碼。而代碼越多,正確的修改就越困難。改進(jìn)代碼設(shè)計(jì)的一個(gè)重要原則就...

      myshell 評(píng)論0 收藏0
    • 后端好書(shū)閱讀與推薦(續(xù))

      摘要:續(xù)前文后端好書(shū)閱讀與推薦,幾十天過(guò)去了,又看了兩本好書(shū)還有以前看過(guò)的書(shū),這里依然把它們總結(jié)歸納一下,加入一些自己的看法有用的鏈接和可能的延伸閱讀,并推薦給需要的同學(xué)。 續(xù)前文 后端好書(shū)閱讀與推薦 - Mageek`s Wonderland ,幾十天過(guò)去了,又看了兩本好書(shū)(還有以前看過(guò)的書(shū)),這里依然把它們總結(jié)歸納一下,加入一些自己的看法、有用的鏈接和可能的延伸閱讀,并推薦給需要的同學(xué)。...

      劉福 評(píng)論0 收藏0
    • 后端好書(shū)閱讀與推薦(續(xù))

      摘要:續(xù)前文后端好書(shū)閱讀與推薦,幾十天過(guò)去了,又看了兩本好書(shū)還有以前看過(guò)的書(shū),這里依然把它們總結(jié)歸納一下,加入一些自己的看法有用的鏈接和可能的延伸閱讀,并推薦給需要的同學(xué)。 續(xù)前文 后端好書(shū)閱讀與推薦 - Mageek`s Wonderland ,幾十天過(guò)去了,又看了兩本好書(shū)(還有以前看過(guò)的書(shū)),這里依然把它們總結(jié)歸納一下,加入一些自己的看法、有用的鏈接和可能的延伸閱讀,并推薦給需要的同學(xué)。...

      OnlyLing 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <