为什么斯坦福的课程使用惰性初始化?

3

为什么斯坦福的课程对所有Getters使用惰性初始化?

这样做正确吗?它有任何真正的优势吗?

其中一个好处(对我而言)是init方法可以变得更短,而且您不需要检查是否分配了变量。


可能不是完全相同的问题,但肯定有关联:https://dev59.com/NGgv5IYBdhLWcg3wQ-gV - Mike D
1个回答

5

这个想法是按需加载资源。这样可以更快地加载一切,只有在需要时才会加载。如果不需要使用,则不会分配额外的内存。


这最终导致初始化成本成为主要应用程序操作的副作用,导致常常难以优化的性能问题,较少出现的是初始化顺序依赖关系,这些依赖关系非常痛苦且难以调试。 - bbum
@bbum 好的...但是当我阅读这个链接和这个链接时,我开始怀疑是否要在每个地方都使用惰性。 - user3307688
到处都不是一个选项。每件事情都是具体情况而定的。正如@bbum所说,Go语言可能会遇到其他问题。经验教会你如何应对每种情况。 - graver
@graver 是的,但斯坦福大学在任何地方都使用lazy...为什么?Paul Hegarty在应用程序启动后立即调用getter时也使用lazy。 - user3307688
在苹果生态系统中,懒加载是相当罕见的。这很可能是教练将其他范例引入的结果。 - Michael
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接