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

            學??嘧髦郏瑫角跒閺?/a>

            留下點回憶

            常用鏈接

            統計

            積分與排名

            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 笨笨 閱讀(2118) 評論(2)  編輯 收藏 引用 所屬分類: 代碼重構

            評論

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

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

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

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

            久久综合久久鬼色| 99精品国产在热久久| 日日狠狠久久偷偷色综合96蜜桃 | 久久久久久久国产免费看| 伊人伊成久久人综合网777| 久久久久亚洲av无码专区喷水 | 人妻系列无码专区久久五月天| 午夜精品久久久久久99热| 狠狠色综合久久久久尤物| 亚洲国产精品无码久久久蜜芽| 国产精久久一区二区三区| 久久AV无码精品人妻糸列| 999久久久免费国产精品播放| 亚洲精品乱码久久久久久自慰| 久久国产视频99电影| 久久综合国产乱子伦精品免费| 日韩中文久久| 久久久久97国产精华液好用吗| 97精品久久天干天天天按摩| 久久99热这里只有精品66| 久久精品国产一区二区三区不卡 | 亚洲综合久久久| 久久久久国产| 国产日韩久久免费影院| 国产精品久久久久久一区二区三区| 欧美国产精品久久高清| 久久高潮一级毛片免费| 91秦先生久久久久久久| 99久久国语露脸精品国产| 奇米影视7777久久精品| 亚洲精品乱码久久久久久久久久久久| 欧美久久一级内射wwwwww.| 久久毛片免费看一区二区三区| 久久久精品午夜免费不卡| 国产精品天天影视久久综合网| 久久国产乱子精品免费女| 26uuu久久五月天| 久久久久亚洲?V成人无码| 少妇久久久久久被弄到高潮| 日本精品一区二区久久久| 亚洲伊人久久综合中文成人网|