## 代碼簡化的基本原則
當你采用一切都是對象的世界觀編寫代碼時,一旦發現一些類之間存在著共性的數據抽象,這往往意味著你需要創造一種泛型的數據容器,然后用這種容器與具體類型的數據的組合來消除那些類。
當你打算從泛型的數據容器中取數據,并希望所取的數據能夠直觀的模擬現實中的事物時,這往往意味著你要創造一些數據結構,然后讓泛型的數據容器中存儲的數據流入這些數據結構中,從而轉化為有類型且具名的數據。這些數據結構就類似于各種各樣的觀察器或 Parser,我們通過它們解讀或修改泛型容器中的數據。
當某個函數?`f`?中有一部分代碼是與具體的問題息息相關,而另一部分代碼則與具體的問題無關。為了讓這個函數具備強大的擴展性,你需要將那些與具體問題息息相關的代碼抽離到專用的函數中,然后再將這些專用函數傳遞給?`f`。