関数の責務
タイトルは微妙かもしれないmrsekut.icon
知らないといけない最小の単位はなにか?
Interface
型で取りうる値を制限するのはこれ
責務
この2つ?
「内部実装」や「実行する順序」などは知らなくても、この2つさえ知っていれば使えるように実装すればいい?
それをイイカンジに表現した言葉がカプセル化?
提供している部品をどういう順番、どういう組み合わせで実行してもバグらないようにしたい
これを考えながら作るのは楽しそう
これは純粋関数であることが前提にある
global変数を使ったり、class内のmethodの場合はpropertyに依存すれば、すべての引数を0個にできてしまう 関数の引数は少ないに越したことはないが、それよりも純粋さのほうが優先事項だと思う
OOPのとき(DDDのときは?)は、引数をでかいObjectを取るのが普通、みたいな話を聞いたが、かなり同意しかねるので、そういう主張の記事とかアレば読みたい
mrsekut.iconは、関数(やmethod)の引数は薄ければ薄いほどよいと思っている
functional-orientedだからかもしれない
これをOOPに適用するのは良くないのか???そんなわけ、となっている
なんでこういう錯覚が生じるのかちょっとわかった気がする
DoctrineみたいなORMが、走査のためにobjectを取るから
$this->hogeRepository->findBy(['Product' => $Product ])みたいにして、$Productをまるまるとって、検索する
本来は、ProductIdさえあれば検索できるはずなのに、何故か許してくれない
そのため、こいつの都合によってObjectを引き回す必要が出てくる
逆に、関数の内部の処理に、名付けて切り出せるものがあるならまだ小さくできるともある
まあわかるが、モジュールの責務に書いたような語彙レベルの問題はまだ残るmrsekut.icon