• <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>
            Dict.CN 在線詞典, 英語學習, 在線翻譯

            學海苦作舟,書山勤為徑

            留下點回憶

            常用鏈接

            統計

            積分與排名

            Denoise

            English study

            Web技術

            數據壓縮

            一些連接

            最新評論

            代碼重構-閱讀心得

            最近閱讀 Martin Flower 的《重構》,對自己有許多啟發,以前認為一些正確的觀點現在看來也不那么正確了;同時發現對重構的理解只有在閱讀了書之后更加徹底;在閱讀《重構》之后我對其中幾點有點感觸:

            ?

            1. 在沒有具體閱讀《重構》之前,我認為重構就是將代碼變的容易理解,容易維護,但在閱讀了《重構》之后才發現重構不僅可以利用到重新構造已有的代碼,也可以幫助我們在閱讀代碼的過程中增加我們的對代碼理解的速度。其實我想每個學習編寫代碼的同行都在學習的過程中閱讀過別人的代碼,然后還有可能將別人的代碼拿到計算機上編譯運行來查看結果表現。實際上我認為這在某種意義上屬于重構,只是重構的粒度有多大,或許你修改別人的代碼一部分來查看修改的結果,從而幫助自己掌握軟件中的更多特性,或者說讓自己修改的代碼表現出原來的功能。 Martin Flower 說的就是如此,我們如果沒有得到別人完整的文檔,那我們怎么樣才能理解別人的代碼來,好的辦法就是我們一邊閱讀別人的代碼,一邊部分部分的修改他人的代碼,然后測試每次修改的結果與以前的結果是否一樣,如果一樣,那么你的重構代碼是正確,那么你肯定能夠理解你自己寫的代碼吧(自己都不理解自己的代碼就不要干了);別人的代碼就這樣在我們一部分一部分重構當中被我們理解了。

            ?

            2. 以前我們寫代碼的時候喜歡設計,設計的我們認為很詳細了,然后開始將所有的功能模塊都寫完,接著再調試,在調試的過程中我們可能花費比寫代碼長的多的時間。是的,因為你在運行一個復雜的東西,當然不容易搞定了。 Martin Flower 認為我們調試的時間可以不用那么長,原因是我們不能在寫完了一個復雜系統的時候再調試,我們可以先建立一個好的測試用例,在寫這個測試用例的過程中我們更能對整個系統了解,也能夠幫助我們寫代碼;然后我們一點點的寫,寫一部分測試一下,保證每次新寫的代碼都能正確運行,從而當代碼寫完了,系統調試也完畢了。這樣的情況下可以認為我們沒有在調試上花時間,我們把時間花在測試和編寫代碼上了。

            ?

            3. 以前認為代碼當中注釋越多越好。 Martin Flower 又一次給我們教訓說,寫注釋是因為你的代碼已經不能告訴代碼閱讀者他的真實意思了。是的,好的代碼可以通過很多方式表達其自身的含義,例如變量的名稱,函數的名稱等;就如一個比較條件判斷來說吧,我們有必要的情況下將這個即使很短的條件抽取一個方法,然后用方法名稱來告訴讀者判斷的真實意義,如果這里直接使用條件判斷就要讓讀者迷惑半天,當然這里的前提是給變量和函數起一個合適的名字,這是考驗程序員真功夫的地方了。另外,這里說的不是說寫注釋不好,如我的目的是如果代碼可以描述意義了,注釋就不需要寫了,這樣就讓你省了一件事情:保證代碼和注釋的同步,這不是更好。

            ?

            4. 在之前我也認為重構會花費很大代碼,因為我們要理解代碼,重新編寫;但為了修改 BUG Martin Flower 告訴我們重構是最快的。也許不相信,我也不相信,但他說的有道理,容易修改的 BUG ,當然早就被修改了,那么剩下的 BUG 就很難找了,主要因為代碼中的邏輯不清楚,重構可以改變這種情況,讓我們的代碼有條有理,那么當然 BUG 就無處藏身了。

            ?

            5. 勇于接受變化。以前認為用戶頻繁的變化需求是不可理喻,實際上是我們自己不可理喻,他們花錢當然需要能提供高質量的服務;而 Martin Flower 認為不用怕改變,我們有重構工具,重構可以讓我們代碼任何時候都是清楚的,容易修改的,那么變化是件快樂的事情不再象以前那樣艱難了。

            ?

            6. 重構與性能不是對立的。重構讓代碼容易理解,而性能讓代碼變的難以理解,不過我們在開始的時候應該考慮怎么樣讓代碼容易理解和維護,這樣我們可以在后面適當的時候對代碼的某部分進行輕松的性能改進工作。本人做性能改進工作有段時間了,想從龐大的雜亂無章的、不熟悉的代碼中找出性能的 bottleneck 的確不是一件容易的事情,我需要的是理解代碼,理解流程,那么如果一個結構很好的代碼對于我來說就好對付多了。因此他們不是對立的,性能以重構為基礎的。

            ?

            其實通過重構,最主要的目的是讓我們的代碼更清晰,更輕巧,更容易被維護,那么也就是我們有良好的代碼,于是我們還懼怕什么,什么都可以輕松搞定。同樣《重構》認為代碼隨時都是清晰的、輕巧的,一般你的代碼不再具有以上特點,那么我們就需要使用重構了。
            本人說不當之處請大家指教。

            posted on 2005-11-11 13:19 笨笨 閱讀(2109) 評論(2)  編輯 收藏 引用 所屬分類: 代碼重構

            評論

            # re: 代碼重構-閱讀心得 2006-08-16 10:30 子彈

            文章顯示有點亂……
            麻煩整理一下,THX  回復  更多評論   

            # re: 代碼重構-閱讀心得 2006-08-16 11:38 笨笨

            不好意思,整理了  回復  更多評論   

            久久青青草原国产精品免费| 久久精品国产亚洲αv忘忧草| 久久无码人妻一区二区三区午夜| 久久精品一本到99热免费| 久久99精品国产麻豆宅宅| 精品免费久久久久久久| 狠狠色综合久久久久尤物| 久久精品青青草原伊人| 91精品无码久久久久久五月天| 亚洲欧美成人久久综合中文网 | 无码国内精品久久人妻| 国产精品久久网| 久久久黄色大片| 国产精品久久久久国产A级| 久久天天躁狠狠躁夜夜2020| 久久香综合精品久久伊人| 亚洲精品无码专区久久同性男| 久久se精品一区二区| 一本久久a久久精品vr综合| 久久久久久久综合综合狠狠| 2021精品国产综合久久| 亚洲中文字幕无码久久2020| 久久久久无码精品国产app| 久久久91精品国产一区二区三区| 中文精品99久久国产| 久久精品视屏| 大美女久久久久久j久久| 久久综合中文字幕| 国产精品99久久精品| 国产精品久久国产精麻豆99网站| 久久SE精品一区二区| 国产美女亚洲精品久久久综合| 色狠狠久久综合网| 麻豆久久| 久久伊人五月丁香狠狠色| 一本色道久久88综合日韩精品| 久久久久人妻一区精品| 久久夜色精品国产| 亚洲一区精品伊人久久伊人| 中文成人无码精品久久久不卡| 亚洲国产精品无码久久久久久曰|