クラス設計で一番やってはいけないこと
オブジェクト指向を学び始めると、多くの人がこう考えます。
- とりあえず動けば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回




ディスカッション
コメント一覧
まだ、コメントがありません