沒看過這本書,你都不知道你的代碼有多Low

程序員書庫(ID:OpenSourceTop) 編譯;
鏈接:https://hackernoon.com/tips-from-the-book-every-programmer-should-read-425fb77873f8


任何一個傻瓜都能寫出計算機可以理解的代碼,惟有寫出人類容易理解的代碼,才是優秀的程序員

——Rober C.Martin


當我開始關心代碼可讀性時,我開始留意自己的代碼是否是:

● 易於維護的

● 易於重構的

● 可重複使用的

● 保持一致

而Robert Martin's也稱"Bob 叔"的《代碼整潔之道》正是程序員編寫出乾淨代碼的聖經,旨在幫助開發者編寫出乾淨的代碼,從而有效提升代碼質量

沒看過這本書,你都不知道你的代碼有多Low


本書特點:

● 豆瓣評分9.0

● 闡述了整潔代碼的敏捷實踐的方法

● 書中介紹規則均來自Martin多年的經驗,擁有很高的借鑑價值

如果你不理解什麼樣的代碼稱之為乾淨的代碼,你可以看看下面這張圖:


沒看過這本書,你都不知道你的代碼有多Low



對大多數軟件開發人員而言,寫出來的代碼都逃不開以下幾個問題:

1、有意義的命名

書中的其中一個章節就專門在討論如何使用最能體現本意的命名,看看下面這個例子

def calc(n1, n2)
return n1 / n2
end


你認為“calc”是這個函數的一個好名字嗎?Bob叔肯定會說會說:不!這是為什麼呢?

1、“calc”是一個縮寫麼?顯然不是!

2、函數是可以做某件事兒的程序,它必須以動詞命名。

3、

即使我將“calc”重新命名為“calculate”,它仍然是模糊的。我們需要通過賦予函數名更多的含義來讓人更容易理解


因為這個函數是要實現兩個數字相除,因此“divide”就是一個很好的函數名

def divide(n1, n2)
return n1 / n2
end
result = divide(1, 2)


即便如此,這段代碼仍然存在問題,參數n1和n2是沒有語義的,如果我們把它們定義為“被除數(dividend)和“除數(divisor)”,“result”變量的值也會隨之改變,我們可以把它稱之為“商(quotient)”,結果會如何呢?


def divide(dividend, divisor)
return dividend / divisor
end
quotient = divide(1, 2)

變量,類,函數和方法應根據其語義去命名。切記不要縮寫名稱而要用有意義的命名。

// bad :( 

def dvd(v1, v2)
return v1 / v2
end
res = dvd(10, 2)
// good :)
def divide(dividend, divisor)
return dividend / divisor
end
quotient = divide(10, 2)


除了有意義的名稱之外,乾淨的代碼還應該編寫可搜索的變量,例如:

// bad :(
wait(foo, 86400000)
// good :)
MILLISECONDS_IN_A_DAY = 86400000;
wait(foo, MILLISECONDS_IN_A_DAY)


2.不要添加不需要的語義

例如,當你在編寫一個類裡面的方法或字段時,不要在方法/字段中引用類名

# bad :(
class Person
property :person_name
end
# good :)
class Person
property :name
end


3.讓你的代碼說話

正常的規則底下,一段良好的代碼,註釋是不可或缺的,但是如果你的代碼已經在命名中體現出所要表達的意思,你也就不再需要註釋了

比如,下面這段代碼就有一個非常糟糕的註釋:

# always returns true
def available?
return false
end


在快速代碼審查中,註釋行可能會導致你閱讀體驗很不好,如:

employee.work
boss.promote(employee)
# employee.party
employee.work


為什麼要讀《代碼整潔之道》?

以上內容只是《代碼整潔之道》一書中的鳳毛菱角,如果你的代碼存在以上問題,那麼你應該好好閱讀本書。

簡而言之,《代碼整潔之道》主要提出一種觀念:代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。

Bob書通過本書給出了一系列行之有效的整潔代碼操作實踐。這些實踐在本書中體現為一條條規則(或稱“啟示”),並輔以來自現實項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾淨的代碼,從而有效提升代碼質量。

毋庸置疑,程序員花在閱讀代碼的時間比編碼的時間長,如果一個代碼庫一開始就沒編寫好,存在的時間越久,就會離其所描述的代碼的意義越遠,對後來者的閱讀造成混淆,因此為了減少程序員在這方面的時間浪費,許多企業大力提倡員工閱讀這本書

讀者書評

以下是摘錄了亞馬遜、豆瓣上高票支持的書評,也是相對客觀的書評,我們在選擇圖書的時候,也可以參考國內外的讀者評價:

這本書很棒,讀了幾次。我想補充一點,亨特和托馬斯的“實用程序員”將是本書的完美補充。 

詳細解說了編寫代碼時的規範和注意事項。強調簡單、直接,不管是命名、類和函數的設計等都應該如此。需要在大型的工程實踐中才能更深刻的體會。
這本書重在對細節的關注。書的編排極其合理,從最小的點開始一點點往大處講。感覺對剛開始工作的小朋友們,代碼看得、寫得還不夠多,讀設計模式之類的書可能還沒什麼體會。但這本代碼細節的書,卻是能立竿見影,直接用到工作中去的。
每個碼農都應該讀。
詳細解說了編寫代碼時的規範和注意事項。強調簡單、直接,不管是命名、類和函數的設計等都應該如此。需要在大型的工程實踐中才能更深刻的體會。


分享到:


相關文章: