• <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>
            隨筆 - 181  文章 - 15  trackbacks - 0
            <2009年3月>
            22232425262728
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            My Tech blog

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            重構原則
            重構的幾個定義
            重構(名詞):對軟件內部結構的一種調整,目的是在不改變"軟件之可察行為"前提下,提高可理解性降低修改成本

            重構(動詞):使用一系列重構準則(手法),在不改變"軟件之可察行為"的前提下,調整其結構。

            重構和性能優化的相同之處:通常都不會改變組件的行為,只會改變其內部結構。
            重構和性能優化的不同之處:出發點不同。性能優化往往使代碼較難理解,但為了得到所需的性能,你不得不那么做。
            兩頂帽子
            添加新功能和重構是兩種截然不同的行為。添加新功能時,你不應該修改既有代碼,只管添加新功能。通過測試,你可以衡量你自己的工作進度;重構時你就不能再添加功能,只管改進程序結構。此時你不應該添加任何測試(除非你發現先前遺漏的任何東西),只在絕對必要(用以處理接口變化)時才修改測試。
            軟件開發過程當中,你可能會經常更換帽子,但是無論在什么時候,都必須清楚自己戴的是哪一頂帽子。

            重構的目的:
            1、重構改進軟件設計
            同樣完成一件事,設計不良的程序往往需要更多代碼,這常常是因為代碼在不同的地方使用完全相同的語句做同樣的事。因此改進設計的一個重要方向就是消除重復代碼。如果消除重復代碼,你就可以確定代碼將所有事物和行為都只表述一次,唯一一次,這正是優秀設計的根本。
            2、重構使程序更容易被理解
            要及時填補想要他做什么和告訴他做什么之間的縫隙。這種編程模式的核心就是“準確說出吾人所欲”。
            這種可理解性還有另一方面的作用。我利用重構來協助我理解不熟悉的代碼。當我看到不熟悉的代碼,我必須試著理解其用途。我先看兩行代碼,然后對自己說:“噢,是的,它做了那些......”。有了重構這個強大武器在手,我不會滿足于這么一點腦中體會。我會真正動手修改代碼,讓他更好的反應出我的理解,然后重新執行,看它是否能夠仍然正常運作,以此檢驗我的理解是否正確。
            3、重構助你找到臭蟲
            重構能夠幫助我寫出強健穩固的代碼。
            4、重構助你提高編程速度
            良好設計是維持軟件開發速的的根本。重構可以幫助你更快速的開發軟件,因為它阻止系統腐敗變質,它甚至可以提高設計質量。
            重構的時機
            重構本來就不是一件“特別撥出時間做”的事情,重構應該隨時隨地進行。不應該為重構而重構,重構是因為你想做別的事,重構可以幫助你把事情做好。
            事不過三,三則重構.
            1、添加功能時一并重構
            想要理解代碼-->重構-->理解代碼
            想要添加特性-->重構-->更容易的添加特性
            2、修補錯誤時一并重構
            如果在修改錯誤的時候,不能一眼發現錯誤,說明需要重構。
            3、復審代碼時一并重構
            復審代碼有助于在開發團隊中傳播知識。
            重構可以幫助我復審別人的代碼。
            得到一定程度的理解-->想到一些點子-->重構-->進一步的理解-->更好的點子。如果不進行重構,我永遠也無法得到這樣的認識。
            最好是一個復審者搭配一個原作者,共同處理這些代碼。復審者提出修改建議,然后兩人共同判斷這些修改能否通過重構輕松實現。果真能夠如此,就一起著手修改。

            為什么重構有用(Why Refactoring Works)
            ---Kent Beck

            程序具有兩面價值:今天可以為你做什么,明天可以為你做什么。大多數時候,我們都只關注自己今天想要程序做什么。不論是修復錯誤或是添加特性,我們都是為了讓程序能力更強,讓它在今天更有價值。
            但是系統今天(當下)的行為,只是整個故事的一部分,如果沒有認清這一點,你無法長期從事編程工作。如果你“為求完成今天任務”而采取的手法使你不可能在明天完成明天的任務,那么你還是失敗。但是,你知道自己今天需要什么,卻不一定知道自己明天需要什么。也許你可以猜到明天的需求,也許吧,但肯定還有些事情出乎你的意料。
            對于今天的工作,了解得很充分;對于明天的工作,我了解得不夠充分。但如果我純粹只是為今天工作,明天我將完全無法工作。
            重構是一條擺脫束縛的道路。如果你發現昨天的決定已經不適合今天的情況,放心改變這個決定就是,然后你就可以完成今天的工作了。明天,喔,明天回頭看今天的理解也許覺得很幼稚,那時你還可以改變你的理解。
            是什么讓程序如此難以相與?下筆此刻,我想起四個原因,它們是:
            難以閱讀的程序,難以修改;
            邏輯重復的程序,難以修改;
            添加新行為時需要修改既有代碼者,難以修改。
            帶復雜邏輯條件的程序,難以修改。
            因此我們希望程序:(1)容易閱讀;(2)所有邏輯都只在唯一地點指定;(3)新的改動不會危及現有行為;(4)盡可能簡單表達邏輯條件。
            重構是這樣一個過程:它在一個目前可以運行的程序上進行,企圖在“不改變程序行為”的情況下賦予上述美好性質,使我們能夠繼續保持高速開發,從而增加程序的價值。

            posted on 2007-06-21 22:37 littlegai 閱讀(183) 評論(0)  編輯 收藏 引用
            国产精品热久久无码av| 国产精品无码久久久久| 人妻精品久久久久中文字幕| 无码任你躁久久久久久老妇| 亚洲中文精品久久久久久不卡| 久久精品亚洲日本波多野结衣| 国产精品久久久天天影视| 久久精品亚洲欧美日韩久久| 香蕉久久夜色精品国产2020| 777米奇久久最新地址| 日日狠狠久久偷偷色综合免费| 久久精品欧美日韩精品| 久久九色综合九色99伊人| 日产精品久久久一区二区| 久久精品成人欧美大片| 久久久精品人妻一区二区三区蜜桃 | 精品熟女少妇AV免费久久| 一级做a爰片久久毛片16| 无码国内精品久久人妻| 青青久久精品国产免费看| 2020久久精品国产免费| 99久久精品免费看国产一区二区三区 | 久久久久国产一级毛片高清板| 亚洲精品美女久久777777| 久久中文字幕无码专区| 国产精品九九九久久九九| 亚洲国产精品无码久久一线| 久久久精品无码专区不卡| 人人狠狠综合久久亚洲婷婷| 亚洲精品高清国产一线久久| 欧美日韩久久中文字幕| 久久国产亚洲精品| 思思久久99热只有频精品66| 伊人情人综合成人久久网小说| 青青草国产成人久久91网| 久久国产精品99久久久久久老狼| 色欲av伊人久久大香线蕉影院| 亚洲欧洲日产国码无码久久99| 国产成人精品久久| 久久亚洲美女精品国产精品| 国产精品美女久久久m|