system-sekkei/isolating-the-domain

日中勤務時間の算出に関する質問

Closed this issue · 4 comments

value = daytimeBreakTime.subtractFrom(timeRange.daytimeBindingTime());

上記のコードは「日中休憩時間を日中拘束時間から引く」という語順になっていると思います。
ですが、下記の呼び出し先では「日中拘束時間から日中休憩時間を引く」というように語順が逆になっています。

return daytimeBindingTime.quarterHour().subtract(value.quarterHourRoundUp());

このように呼び出し元と呼び出し先で語順を入れ替えている背景・意図は何でしょうか。

また、日中勤務時間は日中拘束時間から日中休憩時間を引いたものなので、日中拘束時間にsubtractメソッドを設けて引数に日中休憩時間を受け取り、日中勤務時間を返すという実装にしてはどうかと思ったのですが、これについてご意見をいただいてもよろしいでしょうか。

これは、おっしゃる通り

日中拘束時間にsubtractメソッドを設けて引数に日中休憩時間を受け取り、日中勤務時間を返すという実装

にすべきですね。

subtractFrom() というメソッド名は不自然だと思います。
subtrct() メソッドとして収まる場所にロジックを置くほうがよいと思います。

別の視点ですが、コンストラクタは、単純にオブジェクトをセットするだけにしたほうがよいので、ここは改善すべきですね。

コンストラクタで計算するのではなく、static のファクトリメソッドにしたほうがよさそうです。

ご回答ありがとうございます。

irof commented

逆転はパッケージ依存を 拘束時間 <-- 休憩時間 にしたかったからですね。
とはいえ休憩時間が拘束時間に依存するというのも微妙ですし、パッケージ変更で同じパッケージに収まっているので不要な話。

素直な形にしておきました。

ご対応くださり、ありがとうございます。