私たちの組織には、次のような必須のコーディング規則(説明なし)があります。
if…else ifコンストラクトをelse句で終了する必要がある
例1:
if ( x < 0 )
{
x = 0;
} /* else not needed */
例2:
if ( x < 0 )
{
x = 0;
}
else if ( y < 0 )
{
x = 3;
}
else /* this else clause is required, even if the */
{ /* programmer expects this will never be reached */
/* no change in value of x */
}
これはどのエッジケースを処理するように設計されていますか?
その理由について私が気になるのは、例1では必要ないelse
が例2では必要だということです。その理由が再利用性と拡張性であるelse
ならば、どちらの場合にも使用すべきだと思います。
assert(false, "should never go here")
意味があるかもしれない場所の良い例です
if (x < 0) { x = 0; } else { if (y < 0) { x = 3; }}
ます。または、単にそのようにする必要があるからといって、そのようなルールの多くに従うことはできません。
< 0
チェックを行うと正常に見える)ので、アサートが行われます値が予想される範囲内にある最も一般的なケースでプログラムをクラッシュさせます。