我们的组织有一个必需的编码规则(无任何解释):
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
检查时看起来很正常),所以断言会继续使程序崩溃,可能是最常见的情况,即值在预期范围内。