我一直认为防御性编程是邪恶的(现在仍然如此),因为在我的经验中,典型的防御性编程总是基于不可预知的结果而做出某种不合理的牺牲。例如,我见过很多人试图对自己的同事进行防御性的编码。他们会做一些“以防万一”的事情,以后代码会以某种方式改变。他们最终在某种程度上牺牲了性能,否则他们就会在任何情况下都求助于某种灵丹妙药。
这种特定的编码实践,是否可以算作防御性编程?如果没有,这种做法会被称为什么呢?
Wikipedia将防御性编程定义为防范软件不可预测的使用,但没有指出针对其他程序员的代码完整性的防御性编程策略,因此我不确定它是否适用,也不确定这是什么。
基本上,我希望能够与这样做的人争论,并以专业的方式告诉他们正在做的事情是错误的。我希望能够客观地反对这一点,因为它弊大于利。
发布于 2012-02-05 04:33:51
“过度工程”是错误的。
“防御性编程”很好。
需要智慧经验..。也许是一项常备的频繁代码评审政策.说出区别。
发布于 2012-02-05 04:31:14
这一切都取决于具体情况。如果您正在开发供其他程序员重用的软件,那么至少进行一些防御性编程是有意义的。例如,您可以记录有关输入的所有要求,但有时需要测试输入是否实际上符合要求,以避免灾难性行为(例如,破坏数据库)。这通常涉及(微不足道的)性能问题。
另一方面,防御性可能过了头。也许这就是你的观点。一个或两个具体的例子将有助于区分正在发生的事情。
https://stackoverflow.com/questions/9146913
复制相似问题