密接に関連するデータと振る舞いはクラスにまとめる

Contents

Keep closely related data and behavior together in a class for high cohesion and clear separation of concerns. Conversely, do not split strongly related elements across separate functions. (密接に関連するデータと振る舞いをクラスにまとめて高い凝集度と明確な関心の分離を実現する。逆に、強く関連する要素を別々の関数に分割しない)

解説

高い凝集度は、関連するデータと操作を1箇所にまとめることで実現されます。データとそれを操作する振る舞いが離れていると、変更時に複数箇所を修正する必要が生じ、整合性を保つことが困難になります。クラス(構造体)内で関連する要素を集約することで、コードの理解が容易になり、変更の影響範囲が明確になります。

具体例

// 悪い例
type User struct {
    Name  string
    Email string
}

func validateUserEmail(email string) bool {
    return strings.Contains(email, "@")
}

func formatUserName(name string) string {
    return strings.Title(name)
}

// 良い例
type User struct {
    Name  string
    Email string
}

func (u *User) ValidateEmail() bool {
    return strings.Contains(u.Email, "@")
}

func (u *User) FormatName() string {
    return strings.Title(u.Name)
}

参考リンク

Show Text to Share
密接に関連するデータと振る舞いはクラスにまとめる
https://www.tricrow.com/core/coding-standard/high-cohesion.html
この記事を書いた人
T.Nakamura
T.Nakamura
AIが大好きなクラウドエンジニア。IT業界歴10年以上。標準化と効率化を追求している。技術ネタを発信中。フォローお気軽にどうぞ!フォローはこちら

カテゴリ

タグ