1. 程式人生 > >《Clean Code》讀書筆記——第二周

《Clean Code》讀書筆記——第二周

匯編 寫意 一段 簡單的 blog 建立 沒有 導致 同時

本周我閱讀了《Clean Code》。

“神在細節中!”,建築家範德羅如是說。他當然專註於基於宏偉構架之上的永恒建築形式,他也同樣為自己設計的建築挑選門把手。同樣軟件開發也是這樣,小處見大。在宏偉的建築作品中,我們也要關註細節的回響。重點便是整理,從而達成Clean。一個很好的例子是對於變量命名,認真對待每個變量名。書中作者說,我們就像一群代碼猴子,無視混亂無序,失去代碼的真諦。整潔的代碼正是邁向編程之美的基礎,重要性毋庸置疑。

作者斷言,我們永遠需要代碼。我們可以創造各種工具,但是永遠無法拋棄必要的精確性,代碼呈現了需求的細節。糟糕的代碼可能毀了一個公司,一個工程,整潔的代碼不僅有關效率,還有有關生存。勒布朗法則說:稍後等於永不。我們不能寄希望於稍後清理,抱著混亂代碼好於沒有代碼的態度開發。完成課程任務時,我們往往以得到一段可以運行的代碼為目標,不註意各種細節,一旦出現問題,需要重構代碼,可能連把自己的代碼讀一遍都痛苦萬分。整潔的代碼將有利於後期開發,方便他人或者自己隨後的閱讀。

那麽什麽是整潔的代碼呢?書中詢問了一些知名的程序員,獲得了眾多答案。

  1. 優雅高效,整潔的代碼只做一件事
  2. 簡單直接,如同優美的散文
  3. 便於他人增改
  4. 對代碼全心投入
  5. 沒有重復代碼

當然這是他們的觀點,每個人都可能得到他們自己的答案,並沒有真正的權威答案。就我個人看來,整潔的代碼應當高效清晰,便於閱讀修改,邏輯結構鮮明,更抽象一點,有簡潔的美感。是的,要有美感,這種美感來自於程序員編寫代碼是的清晰邏輯架構,函數的高效使用,以及細節的投入。

軟件中隨處可見命名,這一細節雖小,對於代碼的可讀性有很大的影響。書中給出了一些簡單的規則,首先應當讓命名名副其實,避免誤導,作有意義的區分,比如把抽象的單字母變量換成英語單詞,這顯然會極大增強代碼可讀性和可描述性。是想C語言和其他高級語言,想必匯編或者機器語言,讓人感到簡單方便的重要方面就是各種操作被冠以英語單詞的‘名字’,同樣讀得出來,有意義的命名會極大改善你的代碼。同時也要註意回避 ‘扮可愛’(試圖有趣的命名),雙關,添加沒用的語境等。

函數是語言的動詞,類是名詞。函數是代碼必不可少的重要部分,要寫好函數首先要明白函數是對具體操作的抽象,每個函數裏面嵌套一個函數就是一個抽象層級。混雜不同的抽象層級會導致混亂,失去簡介。具體的,函數應該做一件事,做好這件事,只做這件事。這樣你會收獲一個高效簡潔的函數,一般而言,這會是一個短小的函數,符合函數編寫的第一原則。

初學C語言,重要的一課是如何添加註釋,如何規範清晰地添加註釋。好的註釋可以提供函數使用的信息,對編寫意圖進行闡釋,或者警示其他程序員要註意的細節。但是,註釋不是糟糕代碼的遮羞布,混亂的邏輯不會因為被描述就變得清晰,好的註釋建立在好的代碼基礎上。過多的註釋有時會引起相反的效果,信息過多就是廢話,也難以抓住重點。

《Clean Code》讀書筆記——第二周