<!doctype html>
讀書筆記--第三週html
DRY原則:系統中的每一項只是都必須具備單1、無歧義、權威的表示。node
強加的重複:c++
信息的多重表示。編寫簡單的過濾器或代碼生成器,能夠在每次構建軟件時,使用簡單的代碼生成器,根據公共的元數據表示構建多各類語言下單的結構。能夠根據在線數據庫schema、或是最初用於構建schema的元數據,自動生成類定義。這本書就是一個例子:這本書中摘錄的代碼,由預處理器在做者每次對文本進行格式化時插入。訣竅就是讓該過程成爲主動的,這不能是一次性轉換,不然就會回退到重複數據的狀況。git
代碼中的文檔。糟糕的代碼才須要註釋,咱們須要把低級的知識放在代碼中,它屬於那裏;把註釋保留給其餘的高級說明。不然,咱們就是在重複知識,而每一次改變都意味着既要改變代碼,也要改變註釋。舉個反面例子程序員
xxxxxxxxxx
int d; //d 是直徑
這樣就犯了低級的知識放在了代碼中的錯誤,好的方法是這麼寫:github
xxxxxxxxxx
int diameter;
這樣不須要註釋也知道這個是直徑。web
文檔與代碼。文檔和代碼都含有同一知識的表示。數據庫
語言問題。windows
無心的重複:
例子:一個表示線段的類
xxxxxxxxxx
class Line{
public:
Point start;
Point end;
double length;
}
重複緣由:每改變一個點,都要改變長度,重複!
好的寫法:
xxxxxxxxxx
class Line{
public:
Point start;
Point end;
double length(){ return start.dictanceTo(end); }
}
有時爲了性能而選擇違反DRY原則。一般:須要緩存數據,以免重複昂貴的操做時。其訣竅是使影響局部化。對DRY原則的違反沒有暴露給外界:只有類中的方法須要注意「保持行爲良好」。在可能的狀況下,應該老是用訪問器函數來寫對象的屬性。這將使將來在增長功能(好比緩存)變得更加容易
無耐性的重複:
開發者之間的重複:
Make it easy to reuse.
正交性
什麼是正交性:某種不依賴性或是解耦性
正交的好處:消除無關事物之間的影響
設計自足的祖籍按:獨立,具備單1、良好定義的目的。
提升生產率和下降風險。
提升生產率
下降風險
項目團隊:
編碼:
養成不斷地批判對待本身的代碼的習慣。尋找任何從新進行組織、以改善其結構和正交性的機會。這個過程叫作重構,它很是重要!
正交性與DRY原則密切相關。運用DRY原則,實在尋求使系統中的重複降至最小;運用正交性原則,能夠下降系統的各組件間的相互依賴。在作project時緊密結合DRY原則,運用正交性原則,將會發現開發的系統變得更加靈活、更易於理解,而且更易於調試、測試和維護。
咱們已經開始了咱們的project,可是尚未開始code,提早看了這個讓我有了code時候注意DRY和正交的意識,若是有一天咱們你們都在不顧一切地作出改動,而每一處改動彷佛都會形成別的東西出錯,那麼項目頗有多是沒有進行正交的設計和編碼。那麼這就是咱們重構的時候了。