本週我閱讀了《clean code》。
「神在細節中!」,建築家範德羅如是說。他當然專注於基於巨集偉構架之上的永恆建築形式,他也同樣為自己設計的建築挑選門把手。同樣軟體開發也是這樣,小處見大。在巨集偉的建築作品中,我們也要關注細節的迴響。重點便是整理,從而達成clean。乙個很好的例子是對於變數命名,認真對待每個變數名。書中作者說,我們就像一群**猴子,無視混亂無序,失去**的真諦。整潔的**正是邁向程式設計之美的基礎,重要性毋庸置疑。
作者斷言,我們永遠需要**。我們可以創造各種工具,但是永遠無法拋棄必要的精確性,**呈現了需求的細節。糟糕的**可能毀了乙個公司,乙個工程,整潔的**不僅有關效率,還有有關生存。勒布朗法則說:稍後等於永不。我們不能寄希望於稍後清理,抱著混亂**好於沒有**的態度開發。完成課程任務時,我們往往以得到一段可以執行的**為目標,不注意各種細節,一旦出現問題,需要重構**,可能連把自己的**讀一遍都痛苦萬分。整潔的**將有利於後期開發,方便他人或者自己隨後的閱讀。
那麼什麼是整潔的**呢?書中詢問了一些知名的程式設計師,獲得了眾多答案。
優雅高效,整潔的**只做一件事
簡單直接,如同優美的散文
便於他人增改
對**全心投入
沒有重複**
當然這是他們的觀點,每個人都可能得到他們自己的答案,並沒有真正的權威答案。就我個人看來,整潔的**應當高效清晰,便於閱讀修改,邏輯結構鮮明,更抽象一點,有簡潔的美感。是的,要有美感,這種美感來自於程式設計師編寫**是的清晰邏輯架構,函式的高效使用,以及細節的投入。
軟體中隨處可見命名,這一細節雖小,對於**的可讀性有很大的影響。書中給出了一些簡單的規則,首先應當讓命名名副其實,避免誤導,作有意義的區分,比如把抽象的單字母變數換成英語單詞,這顯然會極大增強**可讀性和可描述性。是想c語言和其他高階語言,想必彙編或者機器語言,讓人感到簡單方便的重要方面就是各種操作被冠以英語單詞的『名字』,同樣讀得出來,有意義的命名會極大改善你的**。同時也要注意迴避 『扮可愛』(試圖有趣的命名),雙關,新增沒用的語境等。
函式是語言的動詞,類是名詞。函式是**必不可少的重要部分,要寫好函式首先要明白函式是對具體操作的抽象,每個函式裡面巢狀乙個函式就是乙個抽象層級。混雜不同的抽象層級會導致混亂,失去簡介。具體的,函式應該做一件事,做好這件事,只做這件事。這樣你會收穫乙個高效簡潔的函式,一般而言,這會是乙個短小的函式,符合函式編寫的第一原則。
初學c語言,重要的一課是如何新增注釋,如何規範清晰地新增注釋。好的注釋可以提供函式使用的資訊,對編寫意圖進行闡釋,或者警示其他程式設計師要注意的細節。但是,注釋不是糟糕**的遮羞布,混亂的邏輯不會因為被描述就變得清晰,好的注釋建立在好的**基礎上。過多的注釋有時會引起相反的效果,資訊過多就是廢話,也難以抓住重點。
clean code 讀書筆記
第一章 整潔的 1.1 要有 永存 1.2 糟糕的 糟糕的 會毀壞公司 我們都曾說過有朝一日回頭清理,當然,在那些日子裡,我們都沒有聽說過 勒布朗法則 稍後等於永不 1.3 混亂的代價 混亂 降低生產力,招募更多的人,或許不能提公升生產力反而引入更多的混亂 1.3.1 華麗的新設計 新舊系統並行,花...
Thinking in Java讀書筆記 第二章
萬物皆物件 一 儲存器 1 棧 存放物件的例項,基本型別等 2 堆 存放物件,類型別等 3 靜態儲存 存放static變數 二 資料型別 基本型別 大小最小值 最大值類型別 預設值 boolean 1 bit boolean false char 16 bit unicode 0 unicode 2...
第二章 讀書筆記
第二章主要講的內容是搭建android 底層開發環境 其中包括 android 應用程式開發環境 android ndk 開發環境和交叉編譯環境的搭建。由於 android 基於linux 核心,所以搭建環境需要使用 linux 作為開發 linux 驅動的平台。它的底層開發需要的工具包含眾多的程式...