甚麼是SOLID?
SOLID,是由Robert C. Martin等人提出的5個物件導向設計原則的英文字首組成,分別為單一職責(S)、開閉原則(O)、里氏替換(L)、介面隔離(I)以及依賴反轉(D)。SOLID提供程式開發者良好的設計指引,可以開發出易理解、易維護、易拓展的系統。
單一職責原則(SRP)
Single Responsibility Principle,SRP
“A module should be responsible to one, and only one, actor.”
譯文:「一個模組應只為單一角色負責。」
白話一點可以想像成“一個類別(class)負責一個主要的功能”,可能會是一種物件或是某些特定服務。
或是從最基礎的方法(method)來看,方法的命名應該與執行的內容符合,並且執行內容應盡量簡單,或是拆分成許多小方法再組合起來,才不會讓別人難懂或是誤用。
大家都曾看過別人的程式方法裡面塞了各種動作而感到阿雜吧? 自己寫可能還感覺不出來,但看別人的code就…恩…。畢竟每個人思考邏輯不盡相同,如何讓別人容易看懂你的程式是需要多花心思的。
或是當一個模組經過經年累月的擴充,而逐漸變得肥大,適時的clean code也是很重要的。
曾經自家的檢測系統內有個分析方法,裏頭有參數去切換資料來源然後輸出,起初只用兩三個if…else…就搞定。但經過同事們各種追加,一段時間後發覺不妙,方法已經塞了近千行的程式碼,裡面各種switch…case切來切去,沒人看得懂,也修改不了。
頭都洗了沒辦法,只好花點時間,按資料種類建對應的工廠,再把基礎功能抽象化、虛擬化,變化的功能則放去各模式內,最後共拆了六個分析模式。
雖然為了拆分它花了不少時間…哭啊!也因為最初功能走向還不明確,只能且戰且走。像極了人生…
總而言之,在軟體開發過程中如何分析系統並定義(或重新定義)一個模組的核心功能,讓各模組維持單一職責是重要的。
發佈留言