System Architecture: 技術筆記01

Joyce Hsiao
Hsiao’s Blog
Published in
Jul 29, 2022

#Clean Code #Code Architecture #Design Pattern

這次的讀書目標是希望可以增進程式架構設計能力,能夠寫出好的程式碼。會從線上課程中汲取心得筆記並記錄在此系列文章當中。

Photo from Unsplash

曾在乙方公司實習時設計客製化Microsoft Dynamics 365 CRM給中小型企業,那時著重在自己設計的程式碼如何在微軟每次軟體更新時不影響到我們的系統作業,或者將更動降到最小。

而現在在甲方公司做軟體開發,面對的是整個生產線的十幾個系統整合以及上千位甚至萬位使用者,這時上述的問題就會更加重要,當設計新的功能時,大至如何不影響其他的系統運作,小至如何不影響自身系統其他功能的運作。

System Design 系統設計

在課本中,會很簡單地把上述的解決方法濃縮,如果程式可以達到"高維護性(Maintainability)和高擴充性(Scalability)"就是一支好的程式碼。但是到底要怎麼達到高維護性以及高擴充性,這就開始有了各種系統架構設計方式。

Software architecture is a set of ideas that tells you which foundation is the right one for your program

系統架構的設計就像蓋房子,是一種style,要根據需求去選擇想要的風格,例如這次設計的是自住用途,那要北歐風、工業風,是否要樓中樓或者挑高;如果這是開餐廳的,那麼空調如何設計,油煙怎麼處理?

然而單一系統就是一間房子,如果像是大公司有多個系統的話,就會是都市計畫了,你設計的房子要配合這都市的水電供應方法,各種規格都要符合規範,極端一點的例子就是如果今天城市提供的電壓從110V變成220V,我們所設計的房子是否會直接shut down?

因此現在有很多的研究討論如何設計出一個高維護性以及高擴充性的架構,概念上就是各種Design Pattern。

而程式撰寫上最常提到的實踐方式就是物件導向,利用他的封裝繼承多型的特性盡量做到"高內聚低耦合(Loose coupling)"以及所謂的SOILD原則

最終就可以設計出"Clean Code"

--

--