HeadlinesBriefing HeadlinesBriefing.com

if上移for下移:编程惯用法解析

Hacker News •
×

编程启发式方法'将 if 上移、将 for 下移'建议将条件逻辑(if 语句)向调用者方向移动,而将迭代循环(for)向批处理方向下移。这通过集中分支和利用批量操作来提高清晰度和性能。

Matklad 讨论了这一原则,展示了将条件上移意味着调用者处理诸如 None 的情况,而函数接受普通的 Walrus。将循环下移涉及将循环延迟到过滤之后,这样热循环无需分支即可运行,并且是向量化的候选。这两种移动可以组合:给定一个 Option<Walrus> 值的集合,调用者丢弃 None 并将 Vec<Walrus> 交给 frobnicate_batch,后者永远不会看到 None。

这一原则在关系数据库查询优化和函数式编程中有更广泛的应用。在数据库查询优化中,同样的原则表现为'早期投影,晚期连接'。早期投影和选择减少数据集宽度并提前过滤,而连接被延迟以在较小的输入上运行。词汇表是颠倒的:查询计划是一棵树,数据从叶子向上流动,因此'树下'意味着'执行更早'。

来源: Hacker News · 由HeadlinesBriefing整理摘要