在軟件設計中分層應該是越少越好, 過度分解一般都是有害的.
雖然說復雜的事物分解之后一般可以得到一些較簡單的組成成分, 但這并不是必然有用的. 分析學成功的關鍵在于分解之后的組分能夠出現大量重疊的情況,
參見軟件中的分析學 http://canonical.blogdriver.com/canonical/555330.html
當分解到一定程度之后我們未必能夠發現可以重用的部分. 而且即使分解后系統中所有的基元都是簡單的, 也并不意味著整個系統就是簡單的. 生物遺傳密碼由四種堿基構成, 但是我們理解了ATGC決不意味著我們理解了生命. 在理論上存在一種連接主義, 認為真正的復雜性蘊含在元素之間的關系之中而不在于元素自身的復雜性. 例如神經網絡的研究中可調的參數多半是神經元之間的連接權重,而不是神經元本身的模型參數.
在理想中, 我們希望系統的功能劃分能夠涇渭分明, 一個類負責一個獨立的功能實現或者一個功能側面(aspect). 但是這只是一種烏托邦式的理想. 在物理的世界中, 我們未必能夠為每一個我們思維中獨立的概念找到一個穩定的物質載體. 就像是水中的漩渦, 看上去它也有固定的形狀, 一定的穩定存在時間, 但是你無法說是哪些水分子參與了漩渦的構成, 實際上波的傳播掠過了整個水面. 同樣, 在軟件中功能的歸屬和聚合很多時候并不是那么穩定的.
當分解到一定程度之后我們未必能夠發現可以重用的部分. 而且即使分解后系統中所有的基元都是簡單的, 也并不意味著整個系統就是簡單的. 生物遺傳密碼由四種堿基構成, 但是我們理解了ATGC決不意味著我們理解了生命. 在理論上存在一種連接主義, 認為真正的復雜性蘊含在元素之間的關系之中而不在于元素自身的復雜性. 例如神經網絡的研究中可調的參數多半是神經元之間的連接權重,而不是神經元本身的模型參數.
在理想中, 我們希望系統的功能劃分能夠涇渭分明, 一個類負責一個獨立的功能實現或者一個功能側面(aspect). 但是這只是一種烏托邦式的理想. 在物理的世界中, 我們未必能夠為每一個我們思維中獨立的概念找到一個穩定的物質載體. 就像是水中的漩渦, 看上去它也有固定的形狀, 一定的穩定存在時間, 但是你無法說是哪些水分子參與了漩渦的構成, 實際上波的傳播掠過了整個水面. 同樣, 在軟件中功能的歸屬和聚合很多時候并不是那么穩定的.