编程意义上的“懒惰”是什么意思?

时间:2019-12-18 07:39:40

标签: naming-conventions

在查看代码时,有时我会看到诸如lazyLoadlazyActivationlazyInitLazyValue之类的单词。我目前正在编码Java,并且许多来源都指定了Java中的大多数命名约定,但并不懒惰。所以我想知道“懒惰/懒惰”是否是惯例,这意味着什么。

1 个答案:

答案 0 :(得分:1)

简而言之,“懒惰”意味着推迟一项操作,直到有必要为止。如果从未使用该操作的结果,则该操作将永远不会执行,从而节省了一些工作。在pseudo-real Python中想到的一个任意示例是:

import gettext_lazy

class Foo:
    bar = Baz(name=gettext_lazy('Baz label'))

这定义了一个类和该类中具有名称的字段。该名称通过gettext本地化为不同的语言。 gettext需要加载翻译文件,将其解析到内存等中。如果从未在任何地方使用此名称(例如print(Foo.bar.name)),那么加载文件的所有工作都将被浪费。另外,在此类定义时,可能尚不确定,以后我们将使用哪种语言环境来输出名称。

由于这两个原因,实际的评估和本地化将推迟到某个时候,直到实际上有必要打印该名称为止。

您经常会在infinite lists等各种语言中找到一些更抽象的示例,您仍可以对其进行迭代,因为它们直到(不存在)结束时才进行评估,但这是一个非常实际的示例