on 2014-03-08

Clean Code(無暇的程式碼) - Note

無瑕的程式碼.jpg

最近跟同事借了這本書, 主要是因為以前沒寫過大專案, 在寫大專案被主管指出有不少的地方邏輯有問題, 變數的命名也有許多問題, 剛好有同事有這本書, 便借來閱讀, 以增進自己的功力, 書中作者是以 Java 為例, 但寫一個 Clean Code 是不分程式語言的.

以下算是閱讀筆記

劣質的程式碼導致了這家公司的倒閉 無暇的程式碼 P.3

我喜歡我程式優雅又有效率. 邏輯直接了當, 使得錯誤無處可躲. 儘量降低程式的相依性, 以減輕維護上的工夫. 根據清楚的策略, 完備處理錯誤的程式碼. 盡可能的最佳化程式效能, 以避免引起他人, 因對於程式進行無章法的最佳化, 而把程式弄得一團亂. Clean Code 只做好一件事. 無暇的程式碼 P.8

Clean Code 是可被原作者以外的開發者閱讀與增強的. …… 無暇的程式碼 P.10

當每個你看到的程式, 執行結果都與你想的差不多, 你會察覺到你正工作在 Clean Code 之上. …… 無暇的程式碼 P.11

……所以讓程式碼更容易閱讀, 也會讓程式碼變得更容易撰寫. 無暇的程式碼 P.16

  • 有意義的命名

    • 使名稱代表意圖
    • 避免編碼
  • 函數

    • 簡短
    • 避免形成巢狀
    • 只做一件事
    • 形成由上往下閱讀的程式碼
    • 減少需要參數量
    • 不要重複

函式應該只做一件事. 它們應該把這件事做好. 而且他們應該只做這件事. 無暇的程式碼 P.41

不要替糟糕的程式碼寫註解 - 重寫它 Brian W.Kernighan(布萊恩.格尼漢) 和 P.J. Plaugher(普勞賀)

  • 註解

    • 用程式碼表達你的本意
    • 法律型註解
    • 資訊型註解
    • 對意圖的解釋
    • TODO
    • 當可以使用函式或變數時就別使用註解
  • 編排

    • 空白間隔
    • 由上往下閱讀
      • 函數的宣告放置於呼叫該函數的下方
      • 以空白的一行區隔
      • 運算子以空白區隔
      • 縮排
  • 物件及資料結構

    • 資料抽象化
    • 資料結構化 物件化

結構化的程式碼(使用資料結構的程式碼)容易添加函式, 而不需要變動已有的資料結構. 而物件導向的程式碼難以添加新的函式, 因為必須改變所有類別. 無暇的程式碼 P.109