讀《編寫可讀程式碼的藝術》

weixin_33861800發表於2017-10-08

程式設計需要看了這本書,表達的意思雖然可以get到,但翻譯讓我沒有一口氣看完,而是斷斷續續看的,記下了我認為重要的點,以後也會經常看這篇來重構程式碼。(來自筆者的小吐槽)

第1章 程式碼應當易於理解

  • 程式碼的寫法應當使別人理解它所需的時間最小化

第一部分 表面層次的改進

第2章 把資訊裝到名字裡

  • 使用專業的單詞
  • 避免空泛的名字
  • 使用具體的名字來更細緻地描述事物
  • 給變數名帶上重要的細節
  • 為作用域大的名字採用更長的名字
  • 有目的地使用大小寫、下劃線等

第3章 不會誤解的名字

  • 避免使用多義性的單詞(如filter、length和limit)
  • 定義一個值的上限或下限時,max_和min_是很好的字首
  • 對於包含的範圍,first和last是好的選擇
  • 對於包含/排除範圍,begin和end是最好的選擇

第4章 審美

  • 重新安排換行來保持一致和緊湊
  • 如果多個程式碼塊做相似的事情,嘗試讓它們有同樣的風格
  • 把程式碼按“列”對齊可以讓程式碼更容易瀏覽
  • 用空行來把大塊程式碼分成邏輯上的“段落”

第5章 該寫什麼樣的註釋

  • 能從程式碼本身中迅速推斷出的事實不需要註釋
  • 在這些地方記錄下想法(指導性批註,程式碼中的缺陷,常量為什麼是這個值)

第二部分 簡化迴圈和邏輯

第7章 把控制流變得易讀

  • 比較的左側值更傾向於不斷變化, 右側值更傾向於常量
  • if/else語句先處理正確的/簡單的情況
  • 不要使用do/while迴圈和goto

第8章 拆分超長的表示式

  • 德摩根定理
    • not(a or b or c) <=> (not a) and (not b) and (not c)
    • not(a and b and c) <=> (not a) or (not b) or (not c)

第9章 變數與可讀性

  • 減少“中間結果”變數
  • 減少每個變數的作用域
  • 只寫一次的變數最好

第三部分 重新組織程式碼

第10章 抽取不相關的子問題

  • 程式碼庫常常有個專門的目錄來存放通用程式碼(比如util)

第11章 一次只做一件事

  • 一次只做一件事的流程
    1. 列出程式碼所做的所有“任務”,“任務”可以小得如“確保這個物件有效”,或者含糊得如“遍歷樹中所有節點”
    2. 儘量把這件任務拆分到不同的函式中,或者至少是程式碼中不同的段落中。

第12章 把想法變成程式碼

  • 用自然語言描述程式然後用這個描述來幫助你寫出更自然的程式碼

第13章 少寫程式碼

  • 從專案中消除不必要的功能,不要過度設計
  • 重新考慮需求,解決版本最簡單的問題,只要能完成工作就行
  • 經常性地通讀標準庫的整個API,保持對它們的熟悉程度

第四部分 精選話題

第14章 測試與可讀性

  • 最好每個測試的輸入/輸出可以用一行程式碼來描述
  • 若測試失敗,錯誤訊息應該能讓編寫程式碼者容易跟蹤並修正這個bug

相關文章