阅读这个问题的代码让我思考。
assert(value>0); //Precondition
if (value>0)
{
//Doit
}
我从不写if语句。断言足以/你唯一可以做的就是断言。
“早崩溃,经常崩溃”
CodeComplete指出:
- Assert语句使应用程序保持正确性
- If测试使应用程序变得健壮
我认为通过纠正无效的输入值或跳过代码并不能使应用程序更加健壮:
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的话: 当我们不仅仅依赖断言时,现实世界中的程序变得太乱了。
问题:我是不是错了,固执,愚蠢,过于非守势......