fall through
動詞
(名詞 fallthrough、別表記:fall-through)
ループを、途中から抜け出すbreakや例外条件によってではなく、終了条件を満たすことによって、すなわち出尽くしによって抜けること。この用法はかなり古いようで、1940年代から1950年代にさかのぼる。
制御をサブルーチンやコードの離れた部分に渡すはずだったテストに失敗すること。
Cでは、switch文中の実行の流れが、switchのヘッダーからそこへジャンプするのではなく、
breakがあると普通は予想される地点を通り過ぎて、caseラベルに到達したときに‘fall-through’が起こる。ささいな例:
switch (color)
{
case GREEN:
do_green();
break;
case PINK:
do_pink();
/* FALL THROUGH */
case RED:
do_red();
break;
default:
do_blue();
break;
}
変種の表記/* FALL THRU */もよく見られる。
上記のコードの効果は、colorがGREENのときdo_green()を、REDのときdo_red()を、PINK以外の他のどの色でもdo_blue()を、そして(ここが重要な部分だが)colorがPINKのときdo_pink()の後にdo_red()を実行することである。Fall-throughは一部の人にはconsidered harmfulとされるが、(状態機械のコーディングなど)それが自然な文脈もある。普通ならbreakを予想する箇所のfall-throughを強調するコメントを入れるのが、一般に良い習慣とされる。Duff's deviceも参照。