Skip to content

Single Responsibility Principle

單一職責原則

01你是不是遇到這個 / THE SYMPTOM

我有個類別(或函式)名字叫 Manager、Helper、Utils,裡面塞了十幾個不相干的方法,每次需求一變這個檔案就要被改,改完還常常牽連到別的功能出 bug。

↑ 如果你點頭了,你要的關鍵字就是 Single Responsibility Principle

02這是什麼 / DEFINITION

物件導向 SOLID 原則的第一條:一個類別或模組應該只有「一個改變它的理由」,也就是只負責一件明確的職責,不要把多種不相關的責任綁在同一個類別上。

03什麼時候用 / WHEN TO USE

當某個類別/函式因為太多種不同原因被一改再改、或你很難用一句話講清楚「它到底是幹嘛的」時,就該依此原則拆分。

04怎麼跟 AI 說 / HOW TO ASK

直接複製這句、貼進 Claude Code / Cursor / Copilot / ChatGPT:

這個 UserManager 同時管登入、發信、產報表,違反單一職責原則(single responsibility principle),請依職責把它拆成 AuthService、MailService、ReportService 三個類別。
05常見坑 / WATCH OUT

「一個職責」常被誤解成「一個方法」而拆過細。判準是「改變的理由」:會因為同一種需求一起改的東西,就屬於同一個職責。它和關注點分離很像,但 SRP 特指針對單一類別/模組的層級。

06相關的詞 / RELATED