アプリ開発日記 #152 ValueObjectに型変換メソッドを実装してみた

新しく作るアプリ

いつも期限前日に焦ってしまう人のためのスケジュール管理アプリを作ろうと考えています。

今日の作業

引き続きアプリの実装を進めています。

そして、アプリの実装を進めている中で、ValueObjectクラスで定義している値だけを画面側に返したくなる場面に遭遇しました。
ただ、Getterを使用した場合、ValueObjectクラスに隠ぺいした値が外に漏れてしまうため、Getterを使うのはあまりよくないということをDDD関連の本とかで見たことがありました。
(Getterを使うのがよくない理由はちょっと違うかも、、、)

そのため、GetterでValueObjectクラスの変数にアクセスするのではなく、ValueObjectクラスにToString()のような型変換メソッドを実装することにしました。
これにより、ValueObjectクラスが別の型としてふるまうことができるようになりました。

結果として、ValueObjectクラスを画面で使用できる型に変換した値を画面側に渡すことができました。

まあ、やってることはGetterと同じで、ValueObjectクラスで定義している値をそのまま返しているだけなのですが。。。

ちなみに、実装イメージは下のような感じです。

public class UserId
{
    private int userId;

    public int ToInt()
    {
        return userId;
    }
}

また、この実装方法が本当にいいのかはわかりません。

現時点でのアイコンイメージ。

f:id:b-kimagure:20200519231406p:plain:w150
アイコンイメージ
このアイコンもあとでinkscapeで作り直そうかなー。

明日以降の作業

実装を続ける