@關(guān)于間接層的概念。
間接層就是我們所提煉出來的小函數(shù)。本來事情是可以交給一個大函數(shù)一次性去執(zhí)行完的,可是我們?yōu)槭裁催€要把他分割成小函數(shù),再委托小函數(shù)這個間接層去完成事情呢。以下是作者總結(jié)出來的三點間接層的好處。
1、 允許邏輯共享。也就是說小函數(shù)做的這些小事情,子類也同樣可以做,而且跟其他事情互不干擾。
2、間接層給了我們一個解釋自己意圖的機會。間接層允許我們選擇最適合表達我們意圖的名字來命名,那在調(diào)用這些函數(shù)的時候,我一看他們的名字就知道他們可能會做些什么事情。就像Justin昨天寫的那個 A()
{
…
….
…. 200 行
}
改成
A()
{
A1();
A2();
A3();
}
A1()
{
…….
}
A2(){….}
A3(){….}
這樣你在整理邏輯的時候,頭腦會很清醒。(因為名字是我們賦予他們的意義)
3、將變化加以隔離,當(dāng)我需要修改一些邏輯的時候,我可以把我在整個項目中掀起的波瀾降低很多。
@在有些開源的框架內(nèi),我的接口名字已經(jīng)公布了,可是現(xiàn)在我在重構(gòu)的時候需要改變這些接口名字,改怎么辦呢?
這時候可以保留舊的接口,然后在舊的接口中用新接口來實現(xiàn)邏輯。一直持續(xù)到所有用戶都開始使用新接口的時候,再把這個舊接口去掉。
@這個世界不存在一條萬能的定律能解決一切問題(我曾經(jīng)想象要是有這么一條定律就好了,這也是很多哲學(xué)家,科學(xué)家所追求過的),所以不要試圖用重構(gòu)來拯救整個世界。有以下幾種情況重構(gòu)不適用。
當(dāng)代碼已經(jīng)腐朽到連正常功能都不能運行的時候,也許重寫(從頭再來一遍)比重構(gòu)要來的簡單。
有的時候臨近發(fā)布,我們要趕眼前的時間,就不應(yīng)重構(gòu)了。重構(gòu)其實是一劑中藥,雖然藥效很好,但是效果卻也來的慢一些。如果是趕時間發(fā)布,那就不要寄希望于重構(gòu)了。重構(gòu)是我們欠的債,很多時候我們都是舉債來發(fā)布的,但是債都是有利息的,“過于復(fù)雜的代碼所造成的【維護和擴展的額外開銷】就是利息。一定的利息我們可以承受,但是利息過高就會被拖垮。“出來混總是要還的”。最近幾次發(fā)布都通宵,這也許就是我們的重構(gòu)債欠的有點過多的信號。是時候來償還一些債了。