また、話した時に頂いた質問についても、以下で触れてみます。
ちなみに、他にも質問がありましたが忘れました(苦笑)
終わった後にすぐまとめたほうが良いですねぇ。
Q.ミュータブルにすると何がオイシイのか?
↓
A.アジャイルとの相性が良い辺り。また、イミュータブルだと本文の通りオイシクない時があるので、相対的にミュータブルがオイシくなると思います
Q.objectはクラス構成(メンバーの数などクラスの大きさ)によって速度が変わるのでは?
↓
A.構成を変えて試してはいないので分からない。あくまでも今回は、同じ構成で値渡しと参照渡しをした時の速度比較した時の話です
最後に、ウチ自身の継続課題などを。
ミュータブルだと、マルチスレッドの時に値の書き換えを心配しないといけないのでは
↓
Webだと、リクエスト(スレッド)ごとにインスタンスを生成すれば、
値を共有することはない?
シングルトンは?
↓
シングルトンは、単一のインスタンスをずっと変えない性質なのでイミュータブルと少し似ている?
であれば、少なくとも積極的に使う必要はないと思う。
疑似グローバルという側面もあるので。
PHPの内部的には一体どうなっているのか?
↓
PHPのデータ構造を読む。
といってもこの辺は、C言語の知識の応用で事足りる?
とりあえず今回はこんな所です。
<追記>
えっと、PHPの関数では、参照渡しよりもreturnしたほうが速い!?というページを見つけました。
で、ウチも検証してみましたが、確かに2倍ぐらい差が出ます。
ただ、今回の記事と違って、値渡しを「していない(正確にはする必要がない)」ので、
そもそも引数が不要な場合(引数の値を関数内で使う必要がない場合)には、
参照渡しよりreturnで戻り値を返した方が良いよって事だと思います。
また、多分突っ込みで、
「この関数が終わった後に、他のクラスで使いたいから参照じゃないとダメなんだ」っていうのがあるかもしれませんが、
それなら、関数が終わった後にセッターに代入しておけば良いのではと思います。
といってもまあ、これはワリと本気で、
クラス構成(こっちは上手く組めば無い?)や処理の流れ(特にコッチ)によっては、
参照渡しにせざるを得ないケースもあるかもしれません。
まぁ、なかなか難しい所だと思います。
以上です。