ありがちダメなコードのダメな理由を書くコーナー。 char const* getNameFromID(int id) { switch (id) { case ID_FOO: return "FOO"; case ID_BAA: return "BAA"; default: return "TEST"; } }ID_FOOを受け取った場合に"FOO"、ID_BAAを受け取った場合に"BAA"を返すという関数、というところまでは良い(役に立つかどうかは別として)。問題はdefault時に返す"TEST"の存在だ。 まず「正しい動作」を確認しなければならない。このソースコードから逆算すると次の三つくらいはありえるだろう。さて、どれが「正しい動作」なのだろうか。 ID_FOO,ID_BAA以外のときは"TEST"を返す。 ID_FOO, ID_BAA以外のときは未定義。 ID_TESTのときは"