不変状態の利点については多くのことが書かれていますが、Scala で可変クラスを優先することが理にかなっている一般的なケースはありますか? (これは、可変クラスを使用した「古典的な」OOP 設計の背景を持つ誰かからの Scala 初心者の質問です。)
3 次元の Point クラスのような些細なことについては、不変性の利点が得られます。しかし、さまざまな制御変数やセンサーの読み取り値を公開する Motor クラスのようなものはどうでしょうか? ベテランの Scala 開発者は、通常、そのようなクラスを不変になるように作成しますか? その場合、「速度」は「var」ではなく「val」として内部的に表され、「setSpeed」メソッドはクラスの新しいインスタンスを返しますか? 同様に、モーターの内部状態を説明するセンサーからの新しい読み取りごとに、Motor の新しいインスタンスがインスタンス化されるでしょうか?
クラスを使用して可変状態をカプセル化する Java または C# で OOP を実行する「古い方法」は、Motor の例に非常によく適合しているようです。したがって、不変状態のパラダイムを使用して経験を積んだら、 Motor のようなクラスを不変になるように設計することさえできるかどうか知りたいです。