首頁 » 物件導向 » [SOLID原則(一)] 單一職責原則(SRP)

[SOLID原則(一)] 單一職責原則(SRP)

作者:

分類:

甚麼是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切來切去,沒人看得懂,也修改不了。

頭都洗了沒辦法,只好花點時間,按資料種類建對應的工廠,再把基礎功能抽象化、虛擬化,變化的功能則放去各模式內,最後共拆了六個分析模式。

雖然為了拆分它花了不少時間…哭啊!也因為最初功能走向還不明確,只能且戰且走。像極了人生…

總而言之,在軟體開發過程中如何分析系統並定義(或重新定義)一個模組的核心功能,讓各模組維持單一職責是重要的。

參考文章

「cian」的個人頭像

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *