jan*_*jan 12 defensive-programming
这个问题的代码让我思考
assert(value>0); //Precondition
if (value>0)
{
//Doit
}
Run Code Online (Sandbox Code Playgroud)
我从不写if语句.断言就足够/你可以做的一切."早点崩溃,经常崩溃"
CodeComplete说明:
我不认为您通过更正无效输入值或跳过代码使应用程序更加健壮:
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
Run Code Online (Sandbox Code Playgroud)
这些更正是基于您对外部世界的假设.只有调用者知道你的函数的"有效输入值"是什么,并且他必须在调用你的函数之前检查它的有效性.
用CodeComplete来解释:" 当我们不依赖于断言时,真实世界的程序会变得太乱."
问题:我错了,顽固,愚蠢,太不防守......