クラス設計で一番やってはいけないこと

オブジェクト指向を学び始めると、多くの人がこう考えます。

  • とりあえず動けばOK
  • 1つのクラスにまとめたほうが楽
  • 分けると複雑になりそう

しかし、クラス設計で一番やってはいけないことがあります。

それは――

「なんでも1つのクラスに詰め込むこと」

です。


よくある例

class GameManager
{
    public int PlayerHp;
    public int EnemyHp;

    public void PlayerAttack() { }
    public void EnemyAttack() { }
    public void ShowTitle() { }
    public void LoadData() { }
    public void SaveData() { }
    public void PlayBgm() { }
}

これ、動きます。

でも問題があります。


何が悪いのか?

このクラスは:

  • プレイヤーの仕事
  • 敵の仕事
  • 画面表示
  • データ保存
  • 音楽再生

全部やっています。

つまり、

責任が混ざっている

のです。


なぜ混ざるとダメなのか?

① 修正が怖くなる

音楽の修正をしたいだけなのに、

HPの処理まで壊れる可能性がある。


② バグの原因が追えない

問題が起きたとき、

どこが原因なのか分からなくなります。


③ チーム開発ができない

2人で作業すると、

同じクラスを触ることになります。

衝突が起きます。


本質はこれ

オブジェクト指向の本質は:

「責任を分けること」

です。

クラスとは、

役割を持つ単位です。


正しい分け方の例

  • Playerクラス → プレイヤーの状態と行動
  • Enemyクラス → 敵の状態と行動
  • SaveManager → 保存処理
  • AudioManager → 音楽管理

これなら、

変更の影響が最小になります。


目安になる質問

クラスを書いているとき、

必ず自分に聞いてください。

  • このクラスは“1つの役割”だけを持っているか?
  • これ、別のクラスに分けたほうが自然ではないか?
  • このクラスの名前と中身は一致しているか?

もし答えが「怪しい」なら、

分けるサインです。


なぜ詰め込みたくなるのか?

理由はシンプルです。

  • 分け方がまだ不安
  • 設計に自信がない
  • とりあえず動かしたい

でも安心してください。

最初は誰でもそうです。


成長のサイン

こう思えたら成長です。

  • なんかこのクラス大きすぎるな
  • これ責任混ざってない?
  • 名前と中身がズレてない?

この違和感が、

設計力の芽です。


まとめ

クラス設計で一番やってはいけないことは:

✔ なんでも1つに詰め込むこと

大切なのは:

✔ 責任を分けること

✔ 役割を明確にすること

オブジェクト指向は難しい理論ではなく、

「整理の技術」

です。


訪問数 3 回, 今日の訪問数 3回