質問: ### 表題の通り、クラス名で悩んでいます 例えば、問題を表す値オブジェクトを実装する場合、そのクラス名はどのように命名されていますか? 1. `Questiron` 2. `QuestironVO` 3. `QuestironValueObject` 4. それ以外
回答: 値オブジェクトかそうでないかを区別しなければ混乱するほどのシステム(もしくはそういうルール・規約を課す)ならその規約に従って、例えば`Value`をつけなさいとなっているなら`QuestionValue`でよいと思います。 混乱がない(値オブジェクトとそれ以外のクラスのネーミングを区別するルール等がなく、想定するプログラムの中に「問い」に関する別の役割のクラスが出てきそうにない)なら、自分はなるべく単純な名前にしたいので`Question`がよいと思う派です。 値オブジェクトって「特定のエンティティーを表すのではなく単に保持している属性の内容が重要でほかのインスタンスと同一性のテストなどを行う必要がない」なんて説明を目にしますが、もしそういう意味だと「銀行口座の残高を表す値クラスが必要でそれを`Money`にする」ならイメージしやすいのですが、「問題を値オブジェクトとする動機はなんだろう、他にエンティティーを表すどんなクラスがあるのだろう・・・」と感じました。そんなところも補足されると閲覧者のみなさんがあなたの悩みをより把握しやすくなると思います。