設(shè)計程序時,會經(jīng)常發(fā)現(xiàn)很多代碼都是大同小異的。為了讓程序更簡潔,也便于代碼的修改,實現(xiàn)代碼復(fù)用是非常重要的。
將代碼段的重復(fù)部分提取出來,差異部分作為新函數(shù)的參數(shù)。這個過程就稱作抽象,根據(jù)程序代碼的實際用途,也可以分為函數(shù)抽象和數(shù)據(jù)抽象。
如何設(shè)計抽象
- 尋找代碼的相似之處。
- 對相似度足夠高的代碼,把相同的部分提取出來作為新函數(shù)。然后標(biāo)出其中的不同之處,再將這些不同列作參數(shù),并根據(jù)這些參數(shù)調(diào)整新函數(shù)。
- 編寫函數(shù)的說明。
- 測試新函數(shù)。
這是函數(shù)抽象的步驟,數(shù)據(jù)抽象也是類似。
如何使用抽象
-
根據(jù)實際問題,寫出函數(shù)的函數(shù)簽名,目標(biāo)陳述,函數(shù)存根,測試樣本。
... distill the problem statement into a signature, a purpose statement, an example, and a stub definition.
找出匹配的抽象。匹配的意思是,該抽象的目標(biāo)陳述囊括了目標(biāo)函數(shù)(more general),而且簽名相類似,
寫出函數(shù)模版。
設(shè)計新函數(shù)內(nèi)部的局部輔助函數(shù)。DrRacket里需要用到
local表達(dá)式.測試。
關(guān)于Python中的抽象
Python和DrRacket有很大的不同。
以上只是理論,具體操作可以看Composing Programs。