軟件設計的哲學 A Philosophy of Software Design - John Ousterhout
作者約翰·奧斯特豪特是美國斯坦福大學計算機科學博薩克·勒納教授,他是 Tcl 腳本 語言的創(chuàng)始人。
這本書是作者在斯坦福授課基礎上編寫的的一本有關與軟件設計的書。
書的前半部分講解軟件復雜度和modules should be deep的觀點,基本是精華所在,作者提出的關于軟件設計的觀點大部分我還是比較認同的。但是這本書是從學術課堂上誕生出來的,難免會有一些理想化的情況,所以,建議帶著實踐的角度去閱讀這本書。
下面拉出書中的一兩個設計原則來聊聊
▌工作不僅僅是編寫代碼;
軟件復雜度是慢慢累積的,初始的設計多少是有理有據的,但是真實開發(fā)的情況是不可預估的,每一次的迭代需要我們踐行“零容忍”哲學,不斷迭代維護整體設計,在完整的框架下來擴展功能。
▌模塊設計應該深;
▌接口設計應當使得最常用的路徑越簡單越好;
這兩條我感覺是本書的核心部分了,把接口interface設計的簡單,就可以允許實現(xiàn)Implement比較復雜,同時還能確保常用的路徑非常簡單(這一設計方式讓我想到了哈夫曼),這兩點我認為能極大的降低系統(tǒng)復雜度的設計。
讀到最后我覺得作者寫這本書的目的并非提供給了大家一個降低系統(tǒng)復雜度的設計指南,而在于激發(fā)大家去討論與思考降低軟件復雜度的設計原則。
就像設計模式是解決某一特定問題的最常用的解決方案一樣,作者提出的一些設計原則可能是某些場景下總結出來的原則,實際的開發(fā)工作中共總會遇到各種各樣的問題不一定能用書中提供的一些原則進行處理,我們認為可以借鑒吸收用到實際工作當中去

FuLStsFfqn3SfiVlggbs_F4IuYI7.jpeg