HeadlinesBriefing HeadlinesBriefing.com

if を上に for を下に:プログラミングのイディオム

Hacker News •
×

プログラミングのヒューリスティック「if を上に、for を下に」は、条件ロジック(if 文)を呼び出し元に向かって上に移動し、反復ループ(for)をバッチ処理に向かって下に押し下げることを提案します。これにより、分岐を集中させ、バルク操作を活用することで、明確さとパフォーマンスが向上します。

Matklad はこの原則について議論し、条件を上に押し上げることは、呼び出し元が None などのケースを処理し、関数が単純な Walrus を受け取ることを意味することを示しました。ループを下に押し下げることは、フィルタリングの後までループを延期することを含み、ホットループが分岐なしで実行され、ベクトル化の候補になります。2つの動きは組み合わさります:Option<Walrus> 値のコレクションが与えられた場合、呼び出し元は None を破棄し、Vec<Walrus> を frobnicate_batch に渡します。frobnicate_batch は None を決して見ません。

この原則は、リレーショナルデータベースのクエリ最適化や関数型プログラミングにおいて、より広い応用があります。データベースのクエリ最適化では、同じ原則が「射影は早く、結合は遅く」として現れます。早期の射影と選択はデータセットの幅を減らし、早期にフィルタリングします。一方、結合はより小さな入力で実行するために延期されます。語彙は逆さまです:クエリプランはツリーであり、データは葉から上に流れるため、「ツリーの下」は「実行の早い段階」を意味します。

出典: Hacker News · 要約:HeadlinesBriefing