1つの関数には1つの責任のみを割り当てる
Contents
Assign one responsibility to one function. Do not pack multiple responsibilities into a single function. The same applies to classes (or “struct + methods” in Go) — follow the Single Responsibility Principle. (1つの関数には1つの責任のみを割り当てる。複数の責任を1つの関数に詰め込んではいけない。クラス(またはGoの「構造体+メソッド」)にも同様に単一責任原則を適用する)
解説
単一責任原則は、ソフトウェア設計の基本原則の一つです。1つの関数が複数の責任を持つと、変更の影響範囲が広がり、テストが困難になります。責任が明確に分離されていれば、変更時に影響を受ける箇所が限定され、バグの混入リスクが減少します。関数やクラスは「変更する理由が1つだけ」であるべきです。
具体例
// 悪い例
func processUser(id string) {
user := fetchUserFromDB(id)
validateUser(user)
sendEmail(user.Email, "Welcome")
logActivity("User processed")
}
// 良い例
func processUser(id string) User {
user := fetchUserFromDB(id)
validateUser(user)
return user
}
func notifyUser(user User) {
sendEmail(user.Email, "Welcome")
}
func logUserActivity(message string) {
logActivity(message)
}
参考リンク
1つの関数には1つの責任のみを割り当てる https://www.tricrow.com/core/coding-standard/single-responsibility.html

