現象
クラス名の最後にData、Info、Information等という余計なモノが付いている。
状況
俺達が日々とり扱っているモノはなんだ?「情報」だろ?「データ」だろ?
わざわざそんな分かり切っている事をクラス名に付けたがるその冗長性はなんだ?
なんでそのクラスだけデータだ情報だと特別扱いしなくちゃいけないのか、そこんとこからまず膝を割って考えてみようじゃないか。
解説
ぶっちゃけこういう名前が付いたクラスは、大体において「DBのテーブル名をそのまま持って来たらこういう名前になっちゃいました」という単純な理由だったりする。
ただし、気をつけなくてはいけないのが、この名前が出てきたこと自体が、「クラスという名前の単なる構造体」という状況が端的に現れたにすぎなかったりする事。
(もちろん「ロジックとデータの分離」なんて問題とは別の次元での話)
対策
こういう名前のクラスが出てきたら
- まず、名前からこのアホらしい部分を取っ払ってみよう。十分通じるんではないか?十分通じるのなら、たんに名前付けがマズかっただけだ。
- 取っ払うとそのクラスの存在意義があやふやになる場合、別のクラスのステート(状態)の一部が不用意に切り出されている可能性がある。
- 不用意な切り出しなどではなく、意図して切り出した部分であったりする場合、その切り出し範囲が不適切なために、問題領域(抽象化領域)がきちんと絞り込めていない可能性がある。
- 一番最悪なのは、そういう名前にしないとしょうがない状況に置かれている(たとえば、そもそもオブジェクト指向開発になっていないとか、変なネーミング・ルールが通っているとか…)というものだが…。その場合は諦めよう、環境が悪すぎる。
ここまで考慮してもやはり余計なモノと思えるものを付けないと不自然な場合があるとすれば、それは本当にその名前である事が適切なクラスだと胸をはれるんじゃないかな。
【関連する記事】