《程序員修煉之道》讀書筆記(二)--第三週

<!doctype html>



The pragmatic programmer(2).md css

程序員修煉之道(二)

讀書筆記--第三週html


第二章 注重實效的途徑

DRY原則:系統中的每一項只是都必須具備單1、無歧義、權威的表示。node

  • 強加的重複:c++

    • 信息的多重表示。編寫簡單的過濾器或代碼生成器,能夠在每次構建軟件時,使用簡單的代碼生成器,根據公共的元數據表示構建多各類語言下單的結構。能夠根據在線數據庫schema、或是最初用於構建schema的元數據,自動生成類定義。這本書就是一個例子:這本書中摘錄的代碼,由預處理器在做者每次對文本進行格式化時插入。訣竅就是讓該過程成爲主動的,這不能是一次性轉換,不然就會回退到重複數據的狀況。git

    • 代碼中的文檔。糟糕的代碼才須要註釋,咱們須要把低級的知識放在代碼中,它屬於那裏;把註釋保留給其餘的高級說明。不然,咱們就是在重複知識,而每一次改變都意味着既要改變代碼,也要改變註釋。舉個反面例子程序員

       
            
            
            
            

      這樣就犯了低級的知識放在了代碼中的錯誤,好的方法是這麼寫:github

       
            
            
            
            

      這樣不須要註釋也知道這個是直徑。web

    • 文檔與代碼。文檔和代碼都含有同一知識的表示。數據庫

    • 語言問題。windows

  • 無心的重複:

    • 例子:一個表示線段的類

       
            
            
            
            

      重複緣由:每改變一個點,都要改變長度,重複!

      好的寫法:

       
            
            
            
            
    • 有時爲了性能而選擇違反DRY原則。一般:須要緩存數據,以免重複昂貴的操做時。其訣竅是使影響局部化。對DRY原則的違反沒有暴露給外界:只有類中的方法須要注意「保持行爲良好」。在可能的狀況下,應該老是用訪問器函數來寫對象的屬性。這將使將來在增長功能(好比緩存)變得更加容易

  • 無耐性的重複:

    • 類似的程序拷貝代碼並在其基礎上作改動,能夠節省幾秒鐘時間,可是之後可能損失幾個小時。欲速則不達!
  • 開發者之間的重複:

    • Make it easy to reuse.

      • 要營造一種環境,在其中要找到並複用已有的東西,比本身編寫更容易。若是不容易,你們就不會去複用,而若是不進行復用,我麼就有重複知識的風險。

正交性

  • 什麼是正交性:某種不依賴性或是解耦性

  • 正交的好處:消除無關事物之間的影響

    • 設計自足的祖籍按:獨立,具備單1、良好定義的目的。

    • 提升生產率和下降風險。

      • 提升生產率

        • 改動得以局部化,設計、編寫簡單的組件,對其進行單元測試,而後把它們忘掉。
        • 促進複用。
      • 下降風險

  • 項目團隊:

    • 正交的團隊效率更高(儘管如此,咱們依然鼓勵自團隊不斷地相互交流)。
  • 編碼:

    • 讓你的代碼保持解耦
    • 避免使用全局數據
    • 避免編寫類似的函數

    養成不斷地批判對待本身的代碼的習慣。尋找任何從新進行組織、以改善其結構和正交性的機會。這個過程叫作重構,它很是重要!

正交性與DRY原則密切相關。運用DRY原則,實在尋求使系統中的重複降至最小;運用正交性原則,能夠下降系統的各組件間的相互依賴。在作project時緊密結合DRY原則,運用正交性原則,將會發現開發的系統變得更加靈活、更易於理解,而且更易於調試、測試和維護。

咱們已經開始了咱們的project,可是尚未開始code,提早看了這個讓我有了code時候注意DRY和正交的意識,若是有一天咱們你們都在不顧一切地作出改動,而每一處改動彷佛都會形成別的東西出錯,那麼項目頗有多是沒有進行正交的設計和編碼。那麼這就是咱們重構的時候了。

相關文章
相關標籤/搜索