Agile Principles, Patterns, and Practices in C# 無瑕的程式碼 敏捷完整篇 第7章 什麼是敏捷設計

        第七章作者用反方向說明什麼是敏捷設計,從讀寫小範例說明軟體會腐化的原因。


原始程式碼就是設計,UML圖形只是設計的一部分。


設計臭味


設計臭味   腐化軟體的氣味


僵化性 (rigidity)  設計難以改變


脆弱性 (fragility)  設計易遭到破壞


頑固性 (immobility)  設計難以重複使用


黏滯性 (viscosity)  難以做正確的事情


不必要的複雜性 (needless complexity)  過分設計


不必要的重複 (needless repetition)  濫用滑鼠進行複製貼上


晦澀性 (opacity)  混亂的表達


 


軟體為何會腐化


軟體的需求會一直改變,修改的人員不一定熟悉原始的設計思維,隨著不斷地修改問題會逐漸累積。


Copy程式


熟悉的場景


寫一個從鍵盤讀入字元並輸出到印表機的程式。


7-1 畫出Copy程式結構圖


需求是會變化的


新的需求也要能從紙帶機讀取資料


解法使用一個布林變數決定資料來源是鍵盤還是紙袋機。


得寸進尺


客戶又有新需求要可以輸出到紙帶穿孔機上。


7-3 用上同樣的作法,新增一個布林變數決定輸出到印表機還是穿孔機。


期望變化


需求總是在變化,要保證軟體能夠禁得起那些變化。


Copy 程式的敏捷設計


當第一次出現軟體需求變化的時候,敏捷開發者會針對未來的可能變化進行調整。


參考7-4,建立一個Reader介面應對各種不同輸入。敏捷團隊遵循開放-封閉原則(The Open-Close Principle, OCP),無需修改可擴展模組。


團隊不是第一版程式就「預測變化」,而是在確定需求有可能一直改變才會跟著修改。


遵循敏捷實踐


依賴反向原則(ISP)與STRATEGY模式


敏捷實踐發現問題


設計原則診斷問提


適當的設計模式解決問題


 


保持盡可能好的設計


隨時保持程式整潔。


總結


敏捷設計是一個過程,不是一個事件。持續應用原則、模式及實踐,來改進軟體結構和可讀性的過程。


敏捷開發人員不會把這些原則和模式應用到預先設計,而是應用在一次次的修改中。


 



留言

這個網誌中的熱門文章

異世界NTR web版第三章 觀後感 喧賓奪主 ,反派實力過強

泛而不精的我被逐出了勇者隊伍 web第三章 觀後感 菲莉真能打; 露娜超爽der

持有縮小技能的D級冒險者,與聖女結婚並加入勇者團隊 漫畫 01-04 觀後感 大我與小我