iT邦幫忙

2022 iThome 鐵人賽

DAY 2
1
自我挑戰組

【從工程師升級成為資深工程師的那檔事】 系列 第 2

【從工程師升級成為資深工程師的那檔事 Day2】 SOLID 五大原則 - 單一職責原則

  • 分享至 

  • xImage
  •  

在做物件導向(OOP)的開發時,常常會發現有些人總是把一堆的功能塞在同一個物件中...

甚麼是 SOLID五大原則

經過長年累月的時間中,某些人(Robert C. Martin 等人)歸納出一些比較好的開發原則,
讓之後的開發中透過檢視是否遵守這個公約,來減少一些代碼異味(Code Smell)。

SOLID 代表著五個原則的五個字首,分別代表:

  • S -> Simple responsibility principle(單一職責原則)
  • O -> Open/closed principle(開閉原則)
  • L -> Liskov Substitution principle(里氏代換原則)
  • I -> Interface segregation principle(介面隔離原則)
  • D -> Dependency inversion principle(依賴倒轉原則)

Simple responsibility principle(單一職責原則)

這是五個原則中最簡單、最實用,也是最容易被人誤會的一個原則。
很多人把他誤會成一個類別(Class)只做一件事情,
甚至有人會說每個method/function都只完成一個任務(雖然這也是個不錯的開發習慣...)。

定義

A class should have only one reason to change.
There should never be more than one reason for a class to change.

這段的翻譯過於文言文,所以用一個雖然不那麼精準,
但比較白話文的方式翻譯:
一個類別(Class)只能被另一個且唯一的類別(Class)呼叫。

用途

單一職責原則(SRP)是用來避免與多個不同類別的耦合。

當我們在做大型開發時,常常會遇到一個問題,
底層的工具類別,常常會被一大堆的類別引用。
在這時候如果某個需求需要做更動的時候,
就會發現要馬改不動,要馬修改後就可能發生多個地方不可預期的錯誤。

結語

雖然遵守單一職責原則(SRP)在大多數時候能增加系統的測試性及可維護性,
但是在設計時也是會有一些例外...
(例如之後會提到的 Singleton Pattern )


上一篇
【從工程師升級成為資深工程師的那檔事】序
下一篇
【從工程師升級成為資深工程師的那檔事 Day3】SOLID 五大原則 - 開放封閉原則
系列文
【從工程師升級成為資深工程師的那檔事】 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言