我为什么要重新实现懒惰?(Why would I want to re-implement lazy

2019-08-01 14:50发布

我在阅读部分Lazyness [原文]在上Twitter的有效斯卡拉页,其中包括这个建议(重点是我的):

使用延迟字段用于此目的[计算和按需缓存值], 但要避免当通过语义需要lazyness使用lazyness。 在这种情况下,最好是明确的 ,因为它使成本模式明确,且副作用可以更精确地控制。

我不明白为什么他们会做出这项声明。 为什么它会更好地避免使用lazy关键字的情况下,当通过语义要求的懒惰(意思是有必要的正确性在你的程序,而不是仅仅把它作为一种优化)。 我不知道如何编写自己的懒惰初始化代码会提出这样的懒惰,需要比使用更清晰的事实lazy语言内置的关键字! 我知道有一点参与制作额外的开销lazy领域线程安全的,但我不认为这是他们在这里得到什么?

是否有一些隐藏的优点本方针上使用的lazy ,我绝对不缺少的,还是我最好还是先忽略这一建议?

Answer 1:

我也建议不同意,但我(以前)认为他们的观点是,懒惰是太容易了 。 你付出了性能损失访问延迟值,但是你不认为你是除了访问正常VAL做什么用点通知。 当然,这是一两件事,让懒惰的丘壑如此有用的:你可以偷懒行为之间进行切换,而不是和不改变你的接口都没有 。 但是,如果人们胡椒他们的代码中随机与lazy ,在关键区域的表现可能会受到影响(假设它是不是比懒评价弥补了更多),初始化的顺序将是更难预测(如果你执行尤为重要很多的副作用),等等。

即便如此,我认为这是糟糕的是明确的 ,但你必须要受到纪律处分。 如果你也不能文档或学科指望,也许是更好的只是避免它完全。



文章来源: Why would I want to re-implement lazy?