(原創) 如何克服複雜度? (OO)
我整理出克服複雜度主要有三種方法:
1.Abstraction
將問題抽象化,也就是所謂的『好讀書,不求甚解』,先將問題的精神抓到,重視其整體架構,忽略細節部分。若以OO來看,就是用class,encapsulation實現。若以電機領域常用的Gajski Y-Chart圖來看,就是structure部分。
2.Generalization
將問題分類,向上即為『歸納法』(induction),若以OO技術,就是inheritance,interface;向下則為『演繹法』(conduction);若以OO而言,就是polymorphism,這些在Y-Chart圖屬於behavior部分。
3.Decomposition
就是Divide and Conquer,這是人類最原始解決複雜度的方式,也是最直覺得方式。OO用association、aggregation、composition等方式實做,在Y-Chart則屬physical部分。
舉例來說,一本厚厚的書該怎麼念?
1.Abstraction:先略讀了解整本書概念要講什麼?對自己領域是否有幫助,若有幫助則將閱讀優先權提高,若較沒幫助則先放著有時間再讀,畢竟時間有限,要將時間用在刀口上。
2.Decomposition:將本書作邏輯切割,將有興趣且和領域相關的先念,當然若有時間一章一章的念更好。
3.Generalization:將讀到的東西做整理,想辦法『吾道一以貫之』,和自己的領域相結合,這樣讀到的東西經過消化後才會是你的。
這三招其實非常好用,可以用這三招克服各領域的複雜度!!