摘要: Any fool can write code that a computer can understand. Good programmers write code that humans can understand. 普通的工程師堆砌代碼,優秀的工程師優雅代碼,卓越的工程師簡化代碼。
普通的工程師堆砌代碼,優秀的工程師優雅代碼,卓越的工程師簡化代碼。如何寫出優雅整潔易懂的代碼是一門學問,也是軟件工程實踐裏重要的一環。筆者推薦三本經典的書籍《代碼整潔之道 》、《編寫可讀代碼的藝術》、《重構:改善既有代碼的設計》,下文重點將從註釋、命名、方法、異常、單元測試等多個方面總結了一些代碼整潔最佳實踐,大部分是筆者總結於以上三本書中的精華,也有部分是筆者工程實踐的總結。篇幅有限,本文將總結性給出一些實踐建議,後續會有文章來給出一些代碼整潔之道的事例。html
團隊統必定義標記git
TODO 待處理的問題 FIXME 已知有問題的代碼 HACK 不得不採用的粗糙的解決方案
典型的爛註釋程序員
不恰當的信息 廢棄的註釋 冗餘註釋 糟糕的註釋 註釋掉的代碼
惟一真正好的註釋是你想辦法不去寫的註釋編程
不要有循規式註釋,好比setter/getter註釋 不要添加日誌式註釋,好比修改時間等信息(git能夠作的事情) 註釋必定是表達代碼以外的東西,代碼能夠包含的內容,註釋中必定不要出現 若是有必要註釋,請註釋意圖(why),而不要去註釋實現(how),你們都會看代碼 適當添加警示註釋
使用更專業的詞,好比不用get而使用fetch或者download
避免空泛的名字,像tmp
使用具體的名字來細緻的描述事物
給變量名帶上重要的細節,好比加上單位ms等
爲做用域大的名字採用更長的名字,做用域小的使用短名字
變量類型爲布爾值表達加上is,has,can,should這樣的詞會更明確設計模式
if else while等控制語句其中代碼塊應該只有一行,也就是一個函數調用語句
函數的鎖進層次不該該多於兩層
一個函數只作一件事,一個函數不該該能抽象出另一個函數api
若是函數傳入三個及以上參數最好將其抽象爲類
標識參數十分醜陋,向函數傳入布爾值用於區分不一樣業務的作法很醜陋,應該拆分爲多個函數併發
快速 Fast
獨立 Independent 測試應該相互獨立
可重複 Repeatable 測試應當在任何環境中重複經過
自足驗證 Self-Validating 測試應該有布爾值輸出
及時 Timely 最好的方式是TDD編程語言
減小變量
縮小變量的做用域
只寫一次的變量更好,如常量函數
從項目中消除沒必要要的功能,不要過分設計
重新考慮需求,解決版本最簡單的問題,只要能完成工做就行
常常性地通讀標準庫的整個API,保持對他們的熟悉程度單元測試
運行全部測試
不可重複
表達了程序員的意圖
儘量減小類和方法的數量
以上規則按重要程度排列
做爲代碼整潔之道系列的第一篇,本文從註釋、命名、方法,單元測試,併發等視角簡單給出了一些最佳實踐,下文咱們會展開來從每一個方面介紹更多的實踐事例。相信每個優秀的工程師都有一顆追求卓越代碼的心,在代碼整潔工程實踐上你有哪些好的建議?數百人協做開發的代碼如何保證代碼整潔一致性?歡迎你們來討論。
本文做者:竹澗
本文爲雲棲社區原創內容,未經容許不得轉載。