免责声明:我是一个正在学习编程的外行。从来没有参与过一个项目,也没有写过超过 500 行的东西。
我的问题是:防御性编程是否违反了不要重复自己的原则?假设我对防御性编程的定义是正确的(让调用函数验证输入而不是相反),那不会对您的代码有害吗?
例如,这很糟糕吗:
int foo(int bar)
{
if (bar != /*condition*/)
{
//code, assert, return, etc.
}
}
int main()
{
int input = 10;
foo(input); //doesn't the extra logic
foo(input); //and potentially extra calls
foo(input); //work against you?
}
与此相比:
int main()
{
if (input == /*condition*/)
{
foo(input);
foo(input);
foo(input);
}
}
同样,作为外行,我不知道就性能而言,有多少简单的逻辑语句对您不利,但防御性编程肯定对程序或灵魂不利。