自頂向下的設計者可能會首先考慮主事件迴圈,然後在考慮插入具體的事件;自底向上設計者通常會考慮封裝具體的事務,以後再按照某種相關次序把這些東西粘合在一起。單純的使用自底向上和自頂向下都無法達到好的效果。
一方面設計程式邏輯(自頂向下),一方面整理底層的域原語(專業術語),然後在中間結合。這樣就導致了膠合層的出現。
膠合層的出現是因為自頂向下和自底向上在結合處會有裂痕。
薄膠合層原則可以看做是分離原則的昇華,策略(應用邏輯)應該與機制(域原語集)清晰的分離。
「完美之道,不在於無可增加,而在於無可刪減。」——這一點和中國道家的思想很想。
c語言處理緊湊,正交,分離之外,還具有透明性的優點。
c語言的設計展示了乙個清晰,簡潔的最簡化設計能夠多麼強大。
程式庫,物件導向語言 unix程式設計藝術學習筆記
強烈傾向於把程式分解成有膠合層連線的庫集合,特別是共享庫。使用庫來達到c語言的模組性。庫分層的乙個重要形式是外掛程式。例項分析 gimp外掛程式 unix的模組化傳統就是薄膠合層原則。也就是程式底層和頂層之間的抽象層越少越好。原因可能是因為c語言建立抽象層非常困難。oo語言鼓勵具有厚重的膠合和複雜層...
Unix介面設計模式 unix程式設計藝術學習筆記
1 過濾器模式 接收標準輸入,然後轉化為標準輸出。把自己當成乙個過濾器。使用時的原則 寬進嚴出,不需要的資訊也絕不丟棄,絕不增加無用資料。比如grep。2 cantrip模式 沒有輸入,沒有輸出,只呼叫一次,引數狀態值,然後退出。比如rm。不需要互動。3 源模式 不需要輸入。比如ls。4 編譯器模式...
微型語言的設計 unix程式設計藝術學習筆記
軟體的缺陷率和使用的語言無關。我曾經設計過乙個機遇xml的微型語言。另外,xtest專案讓我向設計乙個全新的,類似於真正語言的語言,而不是簡單的標記語言。在學習這一章的時候,結合整xtext一起學習一下。發現xtext有乙個問題,它只可以執行的jvm上。我想設計一種dsl,我可以自己編寫它的直譯器。...