讀《編寫可讀程式碼的藝術》
程式設計需要看了這本書,表達的意思雖然可以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章 一次只做一件事
- 一次只做一件事的流程
- 列出程式碼所做的所有“任務”,“任務”可以小得如“確保這個物件有效”,或者含糊得如“遍歷樹中所有節點”
- 儘量把這件任務拆分到不同的函式中,或者至少是程式碼中不同的段落中。
第12章 把想法變成程式碼
- 用自然語言描述程式然後用這個描述來幫助你寫出更自然的程式碼
第13章 少寫程式碼
- 從專案中消除不必要的功能,不要過度設計
- 重新考慮需求,解決版本最簡單的問題,只要能完成工作就行
- 經常性地通讀標準庫的整個API,保持對它們的熟悉程度
第四部分 精選話題
第14章 測試與可讀性
- 最好每個測試的輸入/輸出可以用一行程式碼來描述
- 若測試失敗,錯誤訊息應該能讓編寫程式碼者容易跟蹤並修正這個bug
相關文章
- 『No22: 編寫可讀程式碼的藝術(1)』
- 編寫可讀性程式碼的藝術--萬字總結,看到即學到
- 編寫可閱讀的程式碼--基本規約
- 乾淨的程式碼: 編寫可讀的函式函式
- Dave Cheney:編寫簡單,可讀,可維護的Go程式碼的十個工程建議Go
- 命名&可閱讀的程式碼
- 程式碼可讀性隨想
- 程式碼可讀性心理學
- NodeJS Stream(可讀流、可寫流) API解讀NodeJSAPI
- 程式碼質量第 3 層 - 可讀的程式碼
- python讀寫Excel表格程式碼PythonExcel
- 【讀書筆記】Java併發程式設計的藝術筆記Java程式設計
- 使用JSDoc提高程式碼的可讀性JS
- 《JavaScript Dom程式設計藝術》讀書筆記(一)JavaScript程式設計筆記
- 編寫小而美函式的藝術函式
- 程式碼行數越多可讀性越好?
- Wireshark分析藝術【讀書總結】
- 【java併發程式設計】ReentrantLock 可重入讀寫鎖Java程式設計ReentrantLock
- 精讀《編寫有彈性的元件》元件
- 掌握編寫有效的GitHub提交資訊的藝術Github
- Node.js 可讀流和可寫流Node.js
- JavaScript DOM 程式設計藝術(第2版) 讀書筆記JavaScript程式設計筆記
- aardio 兩行程式碼 呼叫 libxl 讀寫 excel行程Excel
- 與技術無關,但卻值得碼農們好好讀一讀的怪書:禪與摩托車維修藝術
- 【讀書筆記】:《編寫可維護的JavaScript》第07章 事件處理筆記JavaScript事件
- 讓程式碼具有可讀性的10種最佳實踐
- 在pandas中使用pipe()提升程式碼可讀性
- 修改軟體的藝術閱讀筆記及思考筆記
- Java併發程式設計的藝術,解讀併發程式設計的優缺點Java程式設計
- 讀所羅門的密碼筆記11_即興表演藝術家密碼筆記
- 寫介面的藝術: 精簡,可擴充套件套件
- 編寫可擴充套件程式套件
- NodeJs Stream的整理總結 (一) --可讀流與可寫流NodeJS
- 手寫node可讀流之流動模式模式
- 【原創】【深入淺出系列】之程式碼可讀性
- Python中檔案的讀寫、寫讀和追加寫讀三種模式的特點Python模式
- 精讀《手寫SQL編譯器-回溯》SQL編譯
- 併發技術4:讀寫鎖
- 一對一影片直播原始碼,利用列舉提升程式碼的可讀性原始碼