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

隨筆 - 181  文章 - 15  trackbacks - 0
<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

My Tech blog

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

怎么對(duì)經(jīng)理說(shuō)?
技術(shù)復(fù)審是減少錯(cuò)誤,提高開發(fā)速度的一條重要途徑,隨便找一些關(guān)于復(fù)審、審查或軟件的開發(fā)程序的書看看,從中找些最新引證,應(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共享。
分開解釋"意圖"和"實(shí)現(xiàn)"。你可以選擇每個(gè)class和函數(shù)的名字,這給了你一個(gè)解釋自己意圖的機(jī)會(huì)。class或函數(shù)內(nèi)部則解釋實(shí)現(xiàn)這個(gè)意圖的做法。如果class和內(nèi)部函數(shù)又以“更小單元的意圖”來(lái)編寫,你所寫的代碼就可以“與其結(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ì)面臨全盤錯(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ā)布接口”。比公開接口更進(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è)超類異常,然后讓所有的public函數(shù)只在自己的throws 子句中聲明這個(gè)異常。這樣就可以隨心所欲的定義子類異常,不會(huì)影響調(diào)用者。因?yàn)檎{(diào)用者永遠(yuǎn)只知道subperclass異常。
這里可以 寫一個(gè)例子:
開始的時(shí)候,我的電腦只有鍵盤這種輸入工具,所以我可以這樣定義我的“電腦”類:

public interface Computer {

    
void input() throws KeyBoardException;
}

它會(huì)拋出鍵盤異常。后來(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詴刑岢@樣做:

public interface Computer {

    
void input() throws InputDeviceException;
}

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

posted on 2007-06-22 22:59 littlegai 閱讀(181) 評(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>
            日韩亚洲国产欧美| 激情五月婷婷综合| 亚洲在线国产日韩欧美| 久久免费的精品国产v∧| 制服丝袜激情欧洲亚洲| 一本大道久久a久久精品综合| 亚洲精品乱码| 日韩视频一区二区在线观看 | 久久乐国产精品| 久久国产视频网站| 久久人人看视频| 欧美成在线视频| 亚洲精品裸体| 午夜精品福利一区二区蜜股av| 欧美一区二区日韩| 欧美成人精品激情在线观看| 国产精品av免费在线观看| 国产综合久久久久久鬼色| 在线观看欧美视频| 亚洲欧美日韩在线观看a三区| 久久综合狠狠综合久久综合88| 亚洲成色999久久网站| 激情欧美一区二区三区在线观看| 99re这里只有精品6| 欧美亚洲一区二区在线| 美日韩精品视频| 日韩亚洲欧美精品| 欧美在线不卡| 欧美视频成人| 91久久精品www人人做人人爽| 亚洲黄色性网站| 国产主播一区二区三区四区| 亚洲第一搞黄网站| 性18欧美另类| 久久夜色精品国产欧美乱极品 | 一区二区三区四区五区精品| 亚洲免费小视频| 欧美激情在线| 久久久久国色av免费观看性色| 亚洲美女视频在线观看| 欧美一区二区三区在线看| 欧美片第1页综合| 一区二区在线观看视频| 亚洲资源在线观看| 亚洲高清不卡| 久久性天堂网| 国产亚洲精品高潮| 新67194成人永久网站| 亚洲狼人精品一区二区三区| 久久久中精品2020中文| 国产一区三区三区| 午夜电影亚洲| 亚洲一区在线免费| 亚洲精品资源美女情侣酒店| 久久一区精品| 久久午夜精品一区二区| 黄色成人在线网站| 久久免费的精品国产v∧| 亚洲一区欧美激情| 国产精品日韩久久久| 99亚洲视频| 亚洲精品综合久久中文字幕| 欧美高清你懂得| 一本一本久久a久久精品牛牛影视| 亚洲激情偷拍| 欧美三级黄美女| 午夜精品在线视频| 小黄鸭精品aⅴ导航网站入口| 国产麻豆一精品一av一免费| 亚洲欧美在线免费观看| 亚洲欧美日韩电影| 国产日韩在线视频| 另类激情亚洲| 欧美成年人在线观看| 最新亚洲激情| 亚洲免费播放| 国产精自产拍久久久久久蜜| 欧美主播一区二区三区美女 久久精品人| 中日韩视频在线观看| 国产精品嫩草99av在线| 久久精品官网| 欧美国产高潮xxxx1819| 99re6这里只有精品| 中文在线不卡| 狠狠色狠狠色综合日日91app| 免费在线欧美黄色| 欧美美女喷水视频| 久久精品91久久香蕉加勒比| 中文久久乱码一区二区| 日韩亚洲视频| 这里只有精品丝袜| 国产视频一区在线观看一区免费| 久久精品日产第一区二区三区| 香蕉久久国产| 亚洲精品女av网站| 亚洲无亚洲人成网站77777| 欧美在线网站| 亚洲高清视频在线观看| 亚洲人成网站777色婷婷| 欧美日韩综合视频| 久久精品二区亚洲w码| 欧美jizz19hd性欧美| 亚洲综合国产| 免费人成精品欧美精品| 亚洲欧美综合国产精品一区| 久久久久久久久久久久久女国产乱| 亚洲精品国产视频| 亚洲欧美影院| 在线视频欧美日韩精品| 久久国产欧美日韩精品| 亚洲制服少妇| 欧美日产在线观看| 欧美成人嫩草网站| 国产亚洲欧美一区二区三区| 亚洲理论在线观看| 亚洲高清自拍| 久久se精品一区二区| 亚洲淫性视频| 欧美日韩免费在线| 欧美电影免费观看大全| 国产一区99| 亚洲图片激情小说| 99re66热这里只有精品4| 老司机午夜免费精品视频| 欧美在线免费观看亚洲| 欧美四级在线观看| 亚洲日本aⅴ片在线观看香蕉| 在线观看亚洲一区| 亚洲综合视频在线| 亚洲午夜成aⅴ人片| 欧美成人国产| 亚洲国产美女精品久久久久∴| 亚洲人成小说网站色在线| 国精品一区二区| 久久福利电影| 久久久999精品| 国产午夜精品美女视频明星a级| av成人老司机| 亚洲在线一区二区| 欧美特黄a级高清免费大片a级| 亚洲精品在线免费观看视频| 99一区二区| 欧美午夜不卡视频| 亚洲麻豆av| 亚洲一区二区三区四区视频| 欧美日韩另类国产亚洲欧美一级| 亚洲欧洲在线播放| 99精品视频免费全部在线| 欧美日韩1080p| 亚洲一区二区三区激情| 午夜视频一区二区| 国产视频久久网| 久久免费少妇高潮久久精品99| 久热爱精品视频线路一| 久久综合精品国产一区二区三区| 欧美日韩精品中文字幕| 欧美不卡一卡二卡免费版| 亚洲成人影音| 欧美日韩精品免费观看视一区二区| 日韩视频在线你懂得| 亚洲欧美文学| 国内欧美视频一区二区| 老司机一区二区三区| 亚洲人成在线播放| 亚洲女同在线| 狠狠久久综合婷婷不卡| 久久综合99re88久久爱| 亚洲剧情一区二区| 国产精品卡一卡二卡三| 校园激情久久| 亚洲国产成人porn| 欧美一区二区三区精品电影| 在线国产亚洲欧美| 欧美日韩免费观看一区=区三区| 亚洲专区欧美专区| 欧美顶级艳妇交换群宴| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲国产精品美女| 午夜精品久久久久| 怡红院精品视频在线观看极品| 欧美日韩国产精品专区| 久久av红桃一区二区小说| 亚洲国产精品专区久久| 欧美在线一区二区| 在线亚洲国产精品网站| 狠狠综合久久| 国产精品免费小视频| 美女免费视频一区| 午夜精品久久久久久久男人的天堂| 欧美大香线蕉线伊人久久国产精品| 亚洲综合色网站| 日韩视频二区| 伊人久久大香线蕉av超碰演员| 国产精品v欧美精品v日本精品动漫 | 国内在线观看一区二区三区| 欧美精品激情在线观看| 久久久人成影片一区二区三区观看 | 亚洲午夜一区二区| 亚洲国产成人精品久久| 国产亚洲一区二区三区在线观看 |