回答編集履歴
1
誤字の修正
answer
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
####immutableなメソッドチェーン
|
35
35
|
* ストリーム(リスト)オブジェクト … 関数型で見られるような処理ができるパターンです。ストリーム(リスト)を抽出、射影、並び替えなどを次々行います。JavaのStream、C#のLINQ、RubyのEnumerable等。
|
36
36
|
* 今のJava … 最近のJavaに追加されたクラスはimmutableな場合が多い傾向にあります。パフォーマンスもよくなったため、速度よりも安全を取るという選択です。
|
37
|
-
* Ruby … Rubyのオブジェクト自体はmutableなものが多いですが、ほとんどの場合で、新たに生成したオブジェクトを返すメソッドが用意されています。それらとは違い、副作用を伴うメソッドは**破壊的メソッド**とよんでなるべく区別できるようにしています。**それら破壊的メソッドはnilを返す事もあるようにして、わざとメソッドチェーンをしにくくしています。**自然と破壊的メソッドではないmutableなメソッドチェーンを使うように洗脳する恐ろしい言語です。
|
37
|
+
* Ruby … Rubyのオブジェクト自体はmutableなものが多いですが、ほとんどの場合で、新たに生成したオブジェクトを返すメソッドが用意されています。それらとは違い、副作用を伴うメソッドは**破壊的メソッド**とよんでなるべく区別できるようにしています。**それら破壊的メソッドはnilを返す事もあるようにして、わざとメソッドチェーンをしにくくしています。**自然と破壊的メソッドではない**im**mutableなメソッドチェーンを使うように洗脳する恐ろしい言語です。
|
38
38
|
|
39
39
|
###まとめ
|
40
40
|
昔はマシンも貧弱であり、パフォーマンスが重視されていたため、mutableな傾向が強かったと思います。しかし、近年は、マシン速度が向上し、関数型プログラミングの流行に伴い、immutableな実装が主流ではないかと思います。速度と安全は二律背反であり、どちらがか正解という物ではありません。用途や目的などに合わせて選ぶと良いかと思います。
|