為了更好地理解軟體的設計理念,有些教授想出了一些很有意思的點子——那就是模擬真實場景,這使得這些概念更易於學生的理解和掌握。
舉個關於低耦合原則的真實事例:
Mike想要申請一本護照,他到了相關部門之後遇到了Jack
兩天後,他將所需要的資料帶來,但是卻是Patricia接待了他
在現實世界中,Patricia的行為明顯毫無邏輯可言,因為該服務並不是依賴Jack才能辦理的,作為服務的提供者,她應該也為Mike辦理護照。
其具體流程也非常簡單,如果你想要申請護照,那就準備好具體的資料即可。但是沒說一定要讓Jack受理。
這個故事的寓意是:如果此服務高度依賴於Jack,那麼一旦出現突發情況就會產生問題。而如果Jack一直在那,我們是意識不到他的重要性的,但是一旦他沒在,那就會影響服務系統了。
這個道理很淺顯,是吧?但是在軟體設計中,很多開發人員還是會犯這種錯誤,因為他們沒有考慮到高耦合是否符合邏輯。然後,等以後因為做某種改變導致整個架構出現問題的時候,就追悔莫及了——不得不投入更多的時間和資金去解決這些問題。
我們最好能夠視覺化這些軟體程式設計概念,而不僅僅只是讓學生掌握理論。此外,有些圖表工具,例如依賴圖、依賴矩陣和樹對映技術等,可以讓我們視覺化原始碼發生的各種變化。例如對於Java,可以使用JDepend,JArchitect和Structure101,對於C / C++,CppDpend則很不錯。
DSM
設計結構矩陣(DSM)用一種方陣的形式,簡單緊湊又視覺化地表現一個系統或專案。
下面就是一個在Architect使用DSM的例子,從矩陣中我們很容易檢測出常用程式包、依賴週期和非常用程式包。
樹對映
樹對映以一種巢狀矩陣的形式顯示層次(樹形結構)資料。樹的每個分支都有一個矩陣,然後再分支得到更小的矩陣。葉節點的矩陣按比例對映到指定大小的資料容器中。
下面就是一個在Architect使用樹對映的例子,使用一個String類來對映所有的類。
上圖可謂是將原始碼形象化了,通過這種投射到現實世界的方式,有助於我們更好地掌握軟體背後的設計原則。很多情況下,掌握理論並不足以理解一個概念。
英文原文:Understanding software design principles from real world cases
翻譯作者:碼農網 – 小峰
來自:碼農網
相關閱讀
評論(1)