Epochal Time Model

が知らんだけか
Identityがでかいのがわかりにくい
valueを参照してる感じで書けばいいのに、と思った
用語
identity
stateが変化しても同一のもの
immutableである
value
これもimmutableである
state
stateとは、ある時点でのidentityのvalueである
同一のidentityと、複数のvalueの対応付けのこと
valueがimmutableなので、stateもimmutableである
故に、(valueを削除していなければ)いつでも過去のstateを参照できることになる
参照するvalueを切り替えれば、「stateが変わったこと」になる
例
「過去の私」と「現在の私」と言う場合
私
はidentity
年齢( 1,2,...,20
)はそれぞれvalue
状態は( 私
, 1
)とか( 私
, 2
)とか
一方でOOPでは
identityとstateが密結合
故に状態を安易に変更できる
>これは彼らが使う言語のせいだ。そういった言語では、アイデンティティやオブジェクトと同様に値を扱うためデフォルトで書き換え可能であり、そのため特に卓越したプログラマーでない限り、アイデンティティを作りすぎたり、値にするのが適切なものをアイデンティティにしてしまうのだ。ref
後付けで、DDDの
Entityとかも提唱されてきたが、それを表現するツールとしてclassが適切でないだろうことは明らか

Entityは、immutableでなことができるはずのclassを、こっちの方がいいからという理由でmutableにしている
良い設計をするために「知識」が必要になる
「DDDの知識」がない人はそういう発想をしないほうが普通
ツールが悪い
alter
commute
send
atom, agent
ながすぎ
参考