HeadlinesBriefing HeadlinesBriefing.com

Empujar if arriba y for abajo: modismo de programación

Hacker News •
×

La heurística de programación 'empujar if arriba y for abajo' sugiere que la lógica condicional (sentencias if) debe moverse hacia arriba, hacia el llamador, mientras que los bucles iterativos (for) deben empujarse hacia abajo, hacia el procesamiento por lotes. Esto mejora la claridad y el rendimiento al centralizar la ramificación y aprovechar las operaciones por lotes.

Matklad ha discutido este principio, demostrando que empujar los condicionales hacia arriba significa que el llamador maneja casos como None, mientras que la función toma un Walrus simple. Empujar los bucles hacia abajo implica diferir los bucles hasta después del filtrado, para que el bucle caliente se ejecute sin una rama y sea candidato para la vectorización. Los dos movimientos se componen: dada una colección de valores Option<Walrus>, el llamador descarta los None y entrega un Vec<Walrus> a frobnicate_batch, que nunca ve un None.

Este principio tiene aplicaciones más amplias en optimizaciones de consultas de bases de datos relacionales y programación funcional. En la optimización de consultas de bases de datos, el mismo principio aparece como 'proyecciones tempranas, uniones tardías'. Las proyecciones y selecciones tempranas reducen el ancho del conjunto de datos y filtran temprano, mientras que las uniones se difieren para ejecutarse en entradas más pequeñas. El vocabulario está al revés: un plan de consulta es un árbol donde los datos fluyen desde las hojas, por lo que 'bajo el árbol' significa 'más temprano en la ejecución'.

Fuente: Hacker News · Resumido por HeadlinesBriefing