C#でpartialを使ってクラスの中身を分割する

 

こんにちは。

 

開発が進んでいくと、一つのクラスの中身が膨大な行数になることがあると思います。

その理由は様々あり、解決策もまた様々あると思います。

 

その中で、今回はpartialを使ってクラスを分割するということを行います。

 

どのような時にpartialを使うのか

まず、クラスの中身が膨大な行数になっていく場面はいつなのかを考えます。

  1. クラスの役割を明確に分けられておらず、なんでもできる神クラスになっている
  2. 役割は明確だが、メソッドなどが抽象化できていないので同じ処理を複数回書いている
  3. 役割も明確で抽象化もできているが、仕様が多い

 

1の場合はまずクラスの役割を定めましょう。partialで分けるとさらに可読性が低くなります。

2の場合はまず同じメソッドを呼び出していないか、同じ計算を書いていないかを探して最適化しましょう。DRY原則を守れの一言に尽きます。

3の場合。お待たせしました、partialの出番です。

 

そもそもpartialってなんぞ

partial (型) (C# リファレンス)

これ(投げやり)

 

クラスの定義を、複数ファイルにまたいで行うことができます。

例として、ある特定のクラス内で使用するStateの中身をpartialで追加していきます。

 

gist3c692f67badadfc5e98a8f8abd8480a1

 

こんな感じです。

これだけだと分かりづらいかもしれませんが、このStateを継承したState1やState2というクラスはこのソースに帰属しているということがわかるので、メンテナンス性や拡張性も向上します。

 

 最後

使用方法を間違えると、スパゲッティになりがちなので要注意です。

適切な場所で使いましょう。

 

おわり