Help us understand the problem. What is going on with this article?

ちょっとずつ読むドメイン駆動設計 第三部 より深い洞察へ向かうリファクタリング 第十章 しなやかな設計4 表明

More than 1 year has passed since last update.

これまでの第十章

表明

どうしても副作用のある操作

副作用のない関数を値オブジェクトに実装することで、いつの間にか状態が変わってしまうような実装を防ぐことができました。

ただ、どうしても副作用が出る箇所、状態が変わるものはどこかで使わざるを得ない箇所がでてきます。それが、Entityですね。

状態が変わらないシステムなんてそうそうないですから、仕方がないですよね。

表明

副作用がEntityで出てしまうのは仕方がない。なので、できるだけ影響を減らそうというのが表明を使う目的ですかね。

いわゆる、保証されるメソッドの結果を記述する「事後条件」と、事後条件が成り立つことを保証するために満たすべき条件を記述する「事前条件」を使うことで、副作用は出るが、予測可能なメソッドにしましょうということですね。

あまり使わない?

ただ、表明が使える言語は少ないですよね。書籍でも表明を使った例すら上げられていない・・・。
javaには表明の機能がありますが、コンパイルオプションを指定しないと使えない・・・。

実際使ったことないなぁ。。。

テストで表明する

代替案としてはテストを書くことが上げられていて、こちらは例も出ていますね。

メソッドが取りうる条件と、テストで実行した結果が合っているかをテストで書いておくことで、それがドキュメントとして利用できるということですね。

Entityのテストとして、事前条件と事後条件を表明するという意図があるということです。

そもそも意図の明白なインターフェースとモデルを頑張る

人は、頭の中に述語を溜め込むだけではない。モデルの概念を推測したり、補ったりするので、アプリケーションの要求を満たすことだけでなく、人にとって意味のあるモデルを見つけ出すことが重要だ。(第三部 第十章より)

元も子もないですが、やはりこれが大前提。ここを頑張ることが重要ですね。

zozotech
70億人のファッションを技術の力で変えていく
https://tech.zozo.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした