|
|
1
1
考虑一下:
在这个简单的例子中,您可能会(也可能不会)惊讶地发现,在
保持对象不变使其易于推理。当这些对象表示 值类型 不变性实际上至关重要。(在任何主要编程语言或库中指定一个并非不变的值类型。) 关于单线程与多线程编码的另一点:如果您编写的是单线程应用程序,您可能会忽略线程安全这一问题。然而,我认为这在一般情况下有点短视。所有新处理器都有多核,有迹象表明,处理器在未来几年将获得越来越多的核。如果您想编写响应迅速的高性能代码,您需要使用线程安全库编写多线程应用程序。 如果您编写的代码不是线程安全的,并且它包含许多可变对象,则 共享可变状态 ,然后您必须进行大量重构,使其适合在多线程应用程序中使用。另一方面,如果您的对象是不可变的,并且没有共享的可变状态,那么这项工作就会简单得多。 顺便提一下,在函数、类等中使用可变状态是完全可能的,前提是可变状态不共享(即外部可见)。这样,您就可以获得可变状态的性能优势,而没有缺点。 |
|
|
2
0
我完全同意,即使在单线程程序中,不可变对象也更容易推理。然而,有时处理可变数据更为实用,例如,如果性能至关重要(我们的计算机针对变异操作进行了优化),或者您使用的库本身就是有状态的。
|
|
|
Emanuel Pinho · 无不变目标push的角度变化检测策略 8 年前 |
|
|
MingtyeP · 如何使用不可变js取消移动列表中的每个元素? 8 年前 |
|
|
Brannon · 让赋值运算符在申报时工作 8 年前 |
|
|
Javallion · JAVA中的不可变对象初始化 8 年前 |
|
|
Ankush Pandit · 字符串与字符串数组元素之间的比较 8 年前 |
|
|
plamkata__ · Swift到Kotlin,管理不可变列表 8 年前 |