关于不变性影响的经验数据?

Ima*_*ist 16 java immutability

今天在课堂上,我的教授正在讨论如何组建课程.该课程主要使用Java,我拥有比老师更多的Java经验(他来自C++背景),所以我提到在Java中应该支持不变性.我的教授让我证明我的答案是正确的,我给出了我从Java社区听到的理由:

  1. 安全性(特别是带螺纹)
  2. 减少对象数量
  3. 允许某些优化(特别是对于垃圾收集器)

教授对我的发言提出质疑,他说他希望看到对这些好处的一些统计测量.我引用了大量轶事证据,但即便在我这样做的时候,我也意识到他是对的:据我所知,还没有一项关于不变性是否真正提供它在实际代码中所承诺的好处的实证研究.我知道它来自经验,但其他人的经历可能有所不同.

那么,我的问题是,是否有关于不变性在现实世界代码中的影响的任何统计研究?

Yis*_*hai 5

我想指出Effective Java中的第15项.不变性的价值在于设计(它并不总是合适的 - 它只是一个很好的初步近似),从统计的角度来看很少有设计偏好,但我们已经看到了可变对象(日历,日期)已经变得非常糟糕,严重的替代品(JodaTime,JSR-310)选择了不变性.