青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181  文章 - 15  trackbacks - 0
<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用鏈接

留言簿(1)

隨筆分類(lèi)

隨筆檔案

My Tech blog

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

怎么對(duì)經(jīng)理說(shuō)?
技術(shù)復(fù)審是減少錯(cuò)誤,提高開(kāi)發(fā)速度的一條重要途徑,隨便找一些關(guān)于復(fù)審、審查或軟件的開(kāi)發(fā)程序的書(shū)看看,從中找些最新引證,應(yīng)該可以讓大多數(shù)經(jīng)理認(rèn)識(shí)復(fù)審的價(jià)值。然后你就可以把重構(gòu)當(dāng)作“將復(fù)審意見(jiàn)引入代碼內(nèi)”的方法來(lái)使用。

間接層的價(jià)值
允許邏輯共享。比如說(shuō)一個(gè)子函數(shù)在兩個(gè)不同的地點(diǎn)被調(diào)用,或superclass中的某個(gè)函數(shù)被所有subclasses共享。
分開(kāi)解釋"意圖"和"實(shí)現(xiàn)"。你可以選擇每個(gè)class和函數(shù)的名字,這給了你一個(gè)解釋自己意圖的機(jī)會(huì)。class或函數(shù)內(nèi)部則解釋實(shí)現(xiàn)這個(gè)意圖的做法。如果class和內(nèi)部函數(shù)又以“更小單元的意圖”來(lái)編寫(xiě),你所寫(xiě)的代碼就可以“與其結(jié)構(gòu)中的大部分重要信息溝通”。
將變化加以隔離。很可能我在兩個(gè)不同地點(diǎn)使用同一對(duì)象,其中一個(gè)地點(diǎn)我想改變對(duì)象行為,但如果修改了它,我就要冒“同時(shí)影響兩處”的風(fēng)險(xiǎn)。為此我做出一個(gè)subclass,并在需要修改處引用這個(gè)subclass。這樣我就可以修改這個(gè)subclass而不必承擔(dān)“無(wú)意中影響另一處”的風(fēng)險(xiǎn)。
將條件邏輯加以編碼。對(duì)象有一種匪夷所思的機(jī)制:多態(tài)消息,可以靈活而清晰的表達(dá)條件邏輯。只要顯式條件邏輯被轉(zhuǎn)化為消息形式,往往便能夠降低代碼的重復(fù),增加清晰度并提高彈性。
推測(cè)性設(shè)計(jì)總是試圖在任何一行代碼誕生之前就先讓系統(tǒng)擁有所有優(yōu)秀質(zhì)量,然后程序員將代碼塞進(jìn)這個(gè)強(qiáng)健的骨架就行了。這個(gè)過(guò)程的問(wèn)題在于:太容易猜錯(cuò)。如果運(yùn)用重構(gòu),你就永遠(yuǎn)不會(huì)面臨全盤(pán)錯(cuò)誤的危險(xiǎn)。
還有一種比較少見(jiàn)的重構(gòu)游戲:找出不值得的間接層,并將它拿掉。這種間接層常以中介函數(shù)的形式出現(xiàn),也許曾有有過(guò)貢獻(xiàn),但芳華已逝。它也可能是個(gè)組件,你本來(lái)期望在不同地點(diǎn)共享它,或讓他表現(xiàn)出多態(tài)性,最終卻只在一處使用之。如果你找到這種“寄生式間接層”,請(qǐng)把它扔掉。如此一來(lái)你會(huì)獲得一個(gè)更有價(jià)值的程序,不是因?yàn)樗〉昧烁嗟乃姆N優(yōu)秀質(zhì)量,而是因?yàn)樗愿俚拈g接層獲得一樣多的優(yōu)秀質(zhì)量。
數(shù)據(jù)庫(kù)
就算你非常小心的將系統(tǒng)分層,將database schema和對(duì)象模型間的依賴降至最低,但database schema的改變還是讓你不得不遷移所有數(shù)據(jù),這可能是件漫長(zhǎng)而繁瑣的工作。
修改接口
只有當(dāng)需要修改的接口被那些找不到,即使找到也不能修改的代碼使用時(shí),接口的修改才會(huì)成為問(wèn)題。這種接口被稱之為“已發(fā)布接口”。比公開(kāi)接口更進(jìn)一步。接口一旦發(fā)布,你就再也無(wú)法僅僅修改調(diào)用者而能夠安全的修改接口了。
如果重構(gòu)手法改變了已發(fā)布接口,你必須同時(shí)維護(hù)新舊兩個(gè)接口,直到你的所有用戶都有時(shí)間對(duì)這個(gè)變化做出反應(yīng)。幸運(yùn)的是這不太困難。你通常都有辦法把事情組織好,讓舊接口繼續(xù)工作。請(qǐng)盡量這么做:讓舊接口調(diào)用新接口。當(dāng)你需要修改某個(gè)函數(shù)名稱時(shí),請(qǐng)留下舊函數(shù),讓它調(diào)用新函數(shù)。千萬(wàn)不要拷貝函數(shù)實(shí)現(xiàn)碼,那會(huì)讓你陷入“重復(fù)代碼”的泥淖中難以自拔。你還應(yīng)該使用java提供的deprecated(反對(duì))關(guān)鍵字,標(biāo)記舊接口。這么一來(lái)你的調(diào)用者就會(huì)注意它了。
過(guò)渡強(qiáng)調(diào)代碼擁有權(quán)的團(tuán)隊(duì)常常會(huì)犯過(guò)量發(fā)布接口的錯(cuò)誤。除非真有必要,別發(fā)布接口。讓每個(gè)人都可以修改別人的代碼,以運(yùn)應(yīng)接口的改動(dòng)。Pair Programming通常是個(gè)好主意。
對(duì)于會(huì)出現(xiàn)不可控異常的情況,通常可以在包中創(chuàng)建一個(gè)超類(lèi)異常,然后讓所有的public函數(shù)只在自己的throws 子句中聲明這個(gè)異常。這樣就可以隨心所欲的定義子類(lèi)異常,不會(huì)影響調(diào)用者。因?yàn)檎{(diào)用者永遠(yuǎn)只知道subperclass異常。
這里可以 寫(xiě)一個(gè)例子:
開(kāi)始的時(shí)候,我的電腦只有鍵盤(pán)這種輸入工具,所以我可以這樣定義我的“電腦”類(lèi):

public interface Computer {

    
void input() throws KeyBoardException;
}

它會(huì)拋出鍵盤(pán)異常。后來(lái),我的電腦又有了鼠標(biāo)這種設(shè)備,所以要想保證鼠標(biāo)的使用過(guò)程中所產(chǎn)生的錯(cuò)誤是可控的,只能這樣修改接口:

public interface Computer {

    
void input() throws KeyBoardException,MouseException;
}

這樣就導(dǎo)致了接口被修改,涉及這個(gè)接口的實(shí)現(xiàn)者需要作出修改,否則不能編譯通過(guò);但是不這樣做的話,鼠標(biāo)輸入的異常就會(huì)變?yōu)椴豢煽禺惓!K詴?shū)中提倡這樣做:

public interface Computer {

    
void input() throws InputDeviceException;
}

其中InputDeviceException是所有輸入設(shè)備異常的超類(lèi),這樣既不用修改實(shí)現(xiàn)者的代碼,也保證了這些異常是可控的。

posted on 2007-06-22 22:59 littlegai 閱讀(184) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99亚洲视频| 欧美一区二区三区另类| 麻豆精品视频在线观看视频| 激情久久久久久| 牛牛国产精品| 欧美成人中文字幕| 99精品欧美一区二区三区| 亚洲人线精品午夜| 欧美日韩在线观看一区二区| 亚洲欧美日韩综合国产aⅴ| 亚洲午夜激情网页| 国精产品99永久一区一区| 久久在线视频| 欧美日韩国产小视频在线观看| 亚洲一区二区在线播放| 欧美一区二区三区另类| 在线国产亚洲欧美| 日韩午夜电影| 国产三级欧美三级| 欧美第一黄色网| 国产精品久久久一本精品| 久久久久这里只有精品| 欧美激情国产日韩| 欧美在线免费视屏| 免费久久99精品国产| 亚洲专区在线视频| 久久麻豆一区二区| 亚洲永久在线观看| 美女露胸一区二区三区| 亚洲一区二区精品视频| 久久久久国产免费免费| 亚洲午夜激情网页| 老巨人导航500精品| 性高湖久久久久久久久| 欧美经典一区二区三区| 欧美在线观看视频在线| 欧美激情一区二区三区在线视频| 欧美亚洲免费电影| 欧美日本在线观看| 狂野欧美激情性xxxx| 欧美日韩国产一中文字不卡| 久久亚洲不卡| 国产精品一区在线播放| 亚洲精品欧美在线| 亚洲黄色大片| 久久精品中文字幕一区| 亚洲在线1234| 欧美精品一区在线观看| 欧美国产免费| 国内久久精品| 香蕉久久一区二区不卡无毒影院| 亚洲少妇中出一区| 欧美精品国产一区二区| 欧美va亚洲va香蕉在线| 国产一区久久久| 亚洲一区二区在线| 亚洲制服av| 欧美午夜宅男影院在线观看| 亚洲精品一级| 一区二区高清在线| 欧美国产亚洲精品久久久8v| 你懂的亚洲视频| **网站欧美大片在线观看| 久久精品123| 美日韩精品免费| 1000部精品久久久久久久久| 久久精彩免费视频| 久久综合狠狠综合久久综合88| 国产一区二区av| 久久精品欧洲| 欧美国产视频日韩| 亚洲另类在线视频| 欧美韩日一区二区| 亚洲精品中文字幕有码专区| 一区二区久久| 国产精品视频导航| 欧美一区二视频| 老牛国产精品一区的观看方式| 好吊妞这里只有精品| 久久深夜福利| 亚洲精品免费观看| 亚洲先锋成人| 国产在线乱码一区二区三区| 久久成人18免费网站| 欧美成人午夜剧场免费观看| 91久久综合| 欧美日韩亚洲一区| 午夜视频一区二区| 欧美电影电视剧在线观看| 99热免费精品| 国产精品一区二区久久久| 久久成人国产精品| 亚洲黄色一区| 久久成人人人人精品欧| 亚洲电影自拍| 国产精品v欧美精品∨日韩| 午夜精品亚洲一区二区三区嫩草| 久久久女女女女999久久| 91久久香蕉国产日韩欧美9色| 欧美日韩一本到| 久久精品欧美日韩| 99国产精品私拍| 久久综合久久综合久久综合| 日韩视频免费观看| 国产婷婷色一区二区三区在线| 久久欧美中文字幕| 一区二区三区视频在线观看| 久久琪琪电影院| 亚洲一区二区三区高清 | 久久亚洲欧美国产精品乐播| 亚洲黄色免费| 久久九九99视频| 亚洲视频综合| 亚洲电影在线看| 国产欧美一区二区三区久久 | 亚洲视频国产视频| 欧美成人小视频| 欧美一区二区三区日韩视频| 91久久久亚洲精品| 国产亚洲精品久久久| 欧美日韩一区二区高清| 久久蜜臀精品av| 午夜精品在线| 宅男精品视频| 日韩亚洲在线| 亚洲福利视频二区| 久久色在线观看| 欧美一区二区三区免费视频| 99视频+国产日韩欧美| 亚洲风情在线资源站| 国产美女在线精品免费观看| 欧美理论电影在线播放| 久久久久久久欧美精品| 久久av一区| 亚洲欧美激情在线视频| 一区二区三区高清不卡| 99re6热在线精品视频播放速度 | 久久福利精品| 午夜国产欧美理论在线播放| 一区二区三区视频在线播放| 亚洲欧洲一二三| 亚洲黄网站在线观看| 91久久综合| 亚洲精品日韩一| 亚洲黄色尤物视频| 亚洲区一区二区三区| 亚洲国产高清自拍| 最近中文字幕mv在线一区二区三区四区| 激情成人av| 亚洲国产精品小视频| 亚洲国产精品热久久| 亚洲精品日韩精品| 日韩一级黄色av| 亚洲一区二区三区四区中文 | 午夜精品福利在线| 亚洲欧美日韩在线综合| 亚洲欧美中文日韩v在线观看| 亚洲男女自偷自拍| 亚洲欧美日本另类| 久久国产精品久久久久久| 久久精品视频免费| 久久综合九色综合欧美狠狠| 欧美丰满少妇xxxbbb| 亚洲人精品午夜在线观看| av成人免费在线| 校园春色国产精品| 久久这里只精品最新地址| 欧美激情久久久久久| 欧美视频日韩视频| 国产亚洲精品aa午夜观看| 尤物精品国产第一福利三区| 亚洲激情电影在线| 亚洲永久在线| 久久婷婷影院| 亚洲卡通欧美制服中文| 午夜伦欧美伦电影理论片| 美女免费视频一区| 欧美午夜在线观看| 尤物yw午夜国产精品视频| 一本一本大道香蕉久在线精品| 小处雏高清一区二区三区| 欧美xxx成人| 99精品国产99久久久久久福利| 欧美一区二区三区在线观看视频 | 欧美精品久久一区二区| 国产欧美日本| 亚洲毛片在线观看.| 久久激情五月激情| 亚洲开发第一视频在线播放| 午夜精品久久久久久久久久久久| 久色成人在线| 国产麻豆日韩欧美久久| 亚洲精品资源| 久久婷婷国产综合尤物精品| 一区二区三区精品在线| 久热精品视频在线观看| 国产区精品视频| 亚洲专区在线视频| 亚洲国产清纯| 久久久久久久波多野高潮日日|