2013年6月11日火曜日

オブジェクト指向らしいってなんだろう?

DevLoveの「オブジェクト指向でコードが書けるようになろう。」に参加してきた。

会員情報として、次の情報があって、氏名は20文字以内とかメアドやパスワードにもルールがある場合、いくつのクラスをどんな名前で作りますか?
  • 氏名
  • メールアドレス
  • パスワード


的な課題を議論した。

答えはないけど、オブジェクト指向らしいってこんなことだよねっていう結論が以下の感じ。

会員クラス1つでつくっちゃうんじゃなくて、氏名クラス、メールアドレスクラス、パスワードクラスを作って、それらのクラスでルールをチェックする。
  • 単一責務にする(高凝集)
  • データとロジックは同じ場所におく
そうだ、そうだ。
そうした方が変更に強く、簡潔で、オブジェクト指向らしい。

ん!?

オブジェクト指向らしい?
オブジェクトってなんだっけ?
英辞郎(http://www.alc.co.jp/)で調べたら

   〔視覚や触覚で感知できる〕物、物体

が1番目にでてくる。
そうだよね。
「視覚や触覚で感知できる」だよね。

名前オブジェクト?
メールアドレスオブジェクト?
パスワードオブジェクト?

変じゃない?視覚や触覚で感知できないよね。
オブジェクトじゃなくてインスタンスならすっきりするかな。

でも、じゃあ、これらをどう区別するか?

会員クラスの内部クラスとして、名前クラス、メールアドレスクラス、パスワードクラスを定義すればどうだろう?
名前もメールアドレスもパスワードも業務固有の型を持っているからクラスにするけど、あくまで属性として扱う。

考え過ぎかなぁ。。。

0 件のコメント:

コメントを投稿