Java
最初看 Java 文档,看到对列表的修改会导致迭代快速失败的时候,就知道这个词有特定意义,并且有模糊地了解。
Python
近几日跟着教程学习 Python,看到了错误都是 run-time 运行时错误这样的话语,联想第一部分,才意识到,本语言的错误不是快速抛出的。
其实早应该在 JavaScript 中意识到的,但是对它没有经过基础系统的学习,所以没有触动的机会。
重新思考 Java 快速失败
快速失败,fail-fast,应该是在出错时立即抛出异常。相对应的,还有安全失败 fail-safe,同样修改列表的行为,你的迭代不会报错,只是它是旧的列表,所以也是失败。
什么叫快速失败,一篇 CSDN 的文章,请看前两段。国内技术论坛,皆是此类人云亦云抑或凭空臆想的言论,这样的答案,是肤浅的答案,阻塞了通往深层次技术的道路。
简洁 麻利(快速) 果断
因此才选择说这三个词。问为何不是高效,也不是精准,皆为了快速失败,为了尽快暴露错误,这也是敏捷开发的思想之一。待剪草除枝之后,再谈高效。