欢迎光临散文网 会员登陆 & 注册

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

2021-06-13 22:36 作者:tkchenhaha  | 我要投稿

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

編排的目的

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

垂直的編排

想建造重要的大型系統,只使用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(....)

{

   程式區塊是空白

}

團隊的共同準則

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



Clean Code 無瑕的程式碼 第5章 編排的评论 (共 条)

分享到微博请遵守国家法律