关于不可变状态的优点的文章很多,但是在 Scala 中是否有一些常见的情况下更喜欢可变类是有意义的?(这是一个 Scala 新手问题,来自具有使用可变类的“经典”OOP 设计背景的人。)
对于像 3 维 Point 类这样的微不足道的东西,我得到了不变性的优势。但是像 Motor 类这样公开各种控制变量和/或传感器读数的东西呢?经验丰富的 Scala 开发人员通常会编写这样一个不可变的类吗?在这种情况下,“速度”是否会在内部表示为“val”而不是“var”,并且“setSpeed”方法会返回该类的新实例?同样,来自描述电机内部状态的传感器的每个新读数都会导致实例化一个新的电机实例吗?
在 Java 或 C# 中使用类封装可变状态进行 OOP 的“旧方式”似乎非常适合 Motor 示例。所以我很想知道一旦你获得了使用不可变状态范式的经验,你甚至会设计一个像 Motor 这样的类是不可变的。