天天看點

編寫“可讀”代碼的藝術

寫代碼的兩層含義:

一層是功能性,代碼編譯得到類檔案,交給機器去運作,進而實作各種功能、性能、擴充性等特性;

一層是可讀性,這是給人看的,是軟體可維護性的重要部分;

代碼是給人看的,類才是給電腦看的。

1、命名

tmp僅作為臨時存儲,隻要有業務含義,就不應該使用tmp命名;

循環裡的index,不單單使用i,m,n,可以加上業務字首,尤其是嵌套循環的時候;

命名數量詞變量的時候帶上機關更清楚;

變量的類型可以放在名字裡;

名字不能過長或過短,作用域小的變量命名可以短一些;

縮略詞一定是團隊統一的,約定俗成的;

整個團隊,整個系統使用統一的規範明确大小寫、中橫線、下橫線。

2、格式化

團隊内必須保持統一的布局風格;

使用相同的占位符(固定數量的空格)來規範代碼的縮進;

将過長的方法進行分組,按照邏輯形成代碼段,使用空行或者注釋進行分割;

3、注釋

不要解釋代碼本身的事實,更多的記錄思想和原因;

好代碼>壞代碼+好注釋;

為代碼的瑕疵寫詳細的注釋,因為瑕疵更不容易懂;

為系統、子產品、元件增加全局性注釋幫助新人迅速開始;

注釋包括:做什麼、怎麼做、為什麼;

不管你心裡想什麼,先寫下來,讀一讀,然後跟着代碼的修改不斷改進注釋;

注釋要簡潔明确,聲明代碼的高層次意圖,而不是明顯的細節;

4、簡化循環和邏輯

與其盡量追求最小化代碼行數,不如追求最小化人們了解它所需的時間。尤其是在JAVA中的鍊式寫法或者同一行代碼調用多個方法都不推薦,應該拆分成多行代碼,每行調用一個方法給臨時變量指派,然後下一行再對這個臨時變量進行下一個方法繼續運算;

盡量縮小變量的作用域,謹慎的使用全局變量;

5、重新組織代碼

工程學就是把大問題拆分成小問題,然後再将解決方案進行組合;

積極的發現并抽取獨立的、不相關的邏輯形成子方法,一段代碼隻做一件事;

總結通用邏輯和工具代碼,将通用代碼與項目代碼分離;

按需重構結構、重構接口,簡化參數;

讓代碼更加符合思維順序;

能夠把想法給第三個人說明白再寫代碼;

不要假想需求,不要過度設計,不要超前設計

删除無用的、過時的、無效的注釋和代碼;

軍隊通過這種日常最基本的小事來培養軍人的紀律性,而紀律性是任何大規模組織協同作戰最重要的因素。

養成習慣,培養自己的代碼潔癖。