这个问题中的代码让我想到
assert(value>0); //Precondition
if (value>0)
{
//Doit
}
我从不写 if 语句。断言就足够了/你能做的。“早崩溃,经常崩溃”
CodeComplete状态:
- 断言语句使应用程序正确
- if-test 使应用程序健壮
我不认为您通过更正无效的输入值或跳过代码使应用程序更健壮:
assert(value >= 0 ); //Precondition
assert(value <= 90); //Precondition
if(value < 0) //Just in case
value = 0;
if (value > 90) //Just in case
value = 90;
//Doit
这些更正基于您对外部世界所做的假设。只有调用者知道你的函数的“有效输入值”是什么,他必须在调用你的函数之前检查它的有效性。
套用CodeComplete的话:“当我们不完全依赖断言时,现实世界的程序会变得过于混乱。”
问题:我是不是错了,固执,愚蠢,太不防备......