Clean Code

第一章:無瑕的程式碼

BjarneStroustrup
我喜歡我的程式優雅又有效率。•邏輯直截了當,使的錯誤無處可躲。•盡量降低程式的相依性,以減輕維護上的功夫。•Grady

Booch Clean
Code是簡單又直接明瞭的,讀來就像一篇優美的散文。

Ward Cunningham
當每個你看到的程式,執行的結果都與你想的差不多,你會察覺到你正工作在Clean Code之上。

雜亂程式的代價。開發初期速度快,但往後難以維護。•雜亂的程式碼,讓開發的產能隨著時間越來越低,導致產品後期版本的更新越不易。
如果把技能點數點在閱讀程式的技能上,會比點在寫程式這技能在開發上,效益好很多,所以一開始就把code 寫得好看,保持整潔,對於之後的開發絕對是10倍數的影響

第二章:有意義的命名
1.Not too short, not too long(不要太長也不要太短)
2.Meaningful(有意義)
3.Reveal intention(意圖明顯)

程式裡不管是在變數、函式或類別名稱,都需要清楚的命名,不要與程式欲執行的本意落差。變數d沒有傳達出任何資訊,而容易產生誤導。

    intd; // elapsed time in days•變數中具體傳達出該變數要儲存什麼資料。
    •intelasedTimeInDays;
    •intdaysSinceCreation;
    •intdaysSinceModification;
    •intfileAgeInDays;
Public List getThem(){
  LIst list1 = new ArrayList();
   for(int i=0;i

舉例來說,上方程式裡沒有複雜的運算式也沒有其他類別與方法的使用,看起來就是一個簡單的ArrayList,但問題並不在程式碼的複雜度,而在程式本身所隱含的事務。
如果我沒有告知你這是一個計算售出商品的功能,而列表上每一個儲存格都由一個簡單陣列來表示,當索引0是用來表示商品的狀態值,而狀態值等於4為"已出售",而將這些意涵加入名稱當中:

Public List getSellProduct(){
  LIst SellProduct= new ArrayList();
   for(int i=0;i

修改後你會發現程式的複雜度並未改變,有著一樣多的變數、運算式以及結構,但程式的隱含意圖及可讀性卻大大的提升!!!

產生有意義的區別
•無意義的字詞是另一種無意義的區別。
•如有一個類別為Product,另一個叫ProductInfo或ProductData的類別。Info和Data是不可區分的無意義字詞。
•避免思維的轉換,命名的名稱,需要讓其他人看到自己所寫的程式碼,可以很容易讓人知道程式的意圖。
•「清楚明白才是王道」,寫出讓人可了解的程式碼。

類別(Class)的命名
•類別和物件因該使用名詞或名詞片語來命名。
•例:Customer、WikiPage、Account或AddressParser。
•類別名稱不應該是動詞。

方法(Method)的命名
•方法應該使用動詞或動詞片語來命名。
•例:postPayment(登記存款)、deletePage或save。

第三章.函式
•函式越簡短越好,每個函式都一清二楚,透露本身的意圖。
•一個函式,只做一件事情。
•它們把某件事做好,而且它們只做這件事。
•如果函式只做了函式名稱下「同一層抽象概念」,那這個函式就算是只做一件事。
•每個函式只有一層抽象概念。
•例:在製作動態歌詞程式中,我把載入歌詞檔案(load)與解析歌詞(parser)的動作一起在同一個函式完成,很明顯的該函式做了兩件事情。
•不要重複自己,減少重複讓整個模組的可讀性增加。
•重複的程式碼也許是軟體裡所有邪惡的根源。
•重複讓程式變的很擁擠。如要修改程式需要修改很多重複的地方,所需花費時間也會變多。修改也容易遺漏而導致錯誤。

你可能感兴趣的:(Android)