Clean Code 無瑕的程式碼 第5章 編排

        第五章介紹編排程式碼,讓程式碼增加可讀性。


編排的目的


程式的編排是一種溝通方式,影響程式碼的可讀性。


垂直的編排


想建造重要的大型系統,只使用200到500行的程式碼可以做到。


簡短的程式檔案比大型的程式檔案更容易理解。


報紙的啟發


閱讀報紙由上而下閱讀,每個段落會有大標題,讀者會先看大標題之後,才會決定要不要繼續閱讀小細節。


原始檔內容就像報紙,程式名稱簡單易懂,原始檔上層提供高階的概念和演算法,下層描述細節。


概念間的垂直空白區隔


每一段程式碼都代表一個完整的思緒,應該用空白行分隔這些思緒。


5-1範例有加空白行,5-2範例沒有加空白行,明顯5-1可讀性較佳。


垂直密度


5-3插入過多無意義的註解,可讀性反而不如5-4高,因為人的眼睛有固定的視野範圍。


垂直距離


變數宣告(Variable Declarations)


變數宣告盡可能靠近變數被使用的地方


區域變數應該在每個函式的最上方進行宣告


private static void readPreference(){


    InputStream is = null;


迴圈的控制變數應該在迴圈敘述裡宣告


for (Test each; tests)


 


部分情況變數會宣在程式區塊的上方


 


for(){


    TestRunner tr =  …….


 


實體變數(Instance variables)


 


Java實體變數放在類別的最上方


 


C++根據 scissors rule 放到類別的最下方


    


文中的範例是錯誤示範,中間突然出現兩個實體變數。


 


相依的函式(Dependent Functions)


 


某個函式呼叫了另一個函式,兩個函式之間垂直編排要盡量靠近。


 


概念相似性(Conceptual Affinity)


 


就算函數之間沒有互相呼叫,命名規則相似、做的事情相似還是可以放在一起。


 


垂直的順序


 


一個被呼叫的函式,應該要出現在執行呼叫的函式的下方。


 


由上而下閱讀可以先發現高層模組,再找到低層模組。


 


水平的編排


 


依據統計資料,程式設計師偏愛短寬度的程式碼。


 


作者Bob大叔的寬度上限是120個字元。


 


水平的空白間隔和密度


 


範例中作者在運算子 (assignment operators) 例如  = 符號 左右兩邊都加入空白,增加可讀性。


 


空白可以用來表示相關,函式與參數高度相關,函式與小左括號之間不加入空白。


 


函式中的參數用逗號空白將參數分開。


 


空白可以表達先乘除後加減,可參考範例。


 


水平的對齊


 


兩個範例比較結果,作者不追求水平的對齊。


 


縮排


 


從範例可看出縮排可增加程式的可讀性


 


以下情況要縮排


 


類別裡的方法


方法內部的實作


子程式區塊的內容


違反縮排的規則


有時候if敘述或是while敘述短,會想要違反縮排原則。作者不建議這樣做。


 


空視野範圍


 


作者不喜歡這種結構


 


while(....)


{


   程式區塊是空白


}


 


團隊的共同準則


 


一個團隊要有共同的編排準則


 


 


留言

這個網誌中的熱門文章

異世界NTR web版第三章 觀後感 喧賓奪主 ,反派實力過強

持有縮小技能的D級冒險者,與聖女結婚並加入勇者團隊 漫畫 01-04 觀後感 大我與小我

泛而不精的我被逐出了勇者隊伍 web第三章 觀後感 菲莉真能打; 露娜超爽der