【发布时间】:2009-06-07 05:56:16
【问题描述】:
免责声明:我是一个正在学习编程的外行。从来没有参与过项目,也没有写过超过 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);
}
}
同样,作为一个外行,我不知道在性能方面有多少简单的逻辑语句对你不利,但防御性编程肯定对程序或灵魂不利。
【问题讨论】:
-
抱歉,如果你愿意,请删除该标签。不过,我在示例中使用了它。
-
这是我 15 岁自学时写的。现在我可能知道的流行语少了,但我写过更多实质性的程序。我想向前迈出两步……
标签: c++ dry defensive-programming