31得票5回答
这段代码是防御式编程还是糟糕的实践?

我和我的同事在就这段代码进行辩论:var y = null; if (x.parent != null) y = x.parent.somefield; 我认为,在代码所在的地方,x.parent 不应该可能为 null。当它为 null 时,我们就会遇到严重的问题,我想知道发生了什么...

22得票5回答
复制构造函数和防御性拷贝

什么是复制构造函数? 有人能分享一个小例子来帮助理解防御性复制原则吗?

21得票2回答
如何将防御性编程技术结合起来?

我想问你的问题相当广泛,但同时也非常具体。首先,我必须说,我最感兴趣的是适用于 .net 环境的答案。 好吧,我想提高我所编写代码的水平。现在我主要使用 TDD 和静态代码分析来确保我的代码是正确的。最近我听了 Dino Esposito 的关于代码协定的演讲,现在我想将其与其他技术结合使用...

17得票9回答
网站编程漏洞清单

观察 Stack Overflow 上线对我来说是一次很有教育意义的经历。我想列出一个清单,包括针对网站使用的各种漏洞和攻击方式,以及可以用来防御它们的编程技巧。 哪些类型的漏洞? 使网站崩溃 入侵服务器 入侵其他人的登录信息 垃圾邮件 假冒他人身份,利用现实中关系进行欺诈 等等......

15得票3回答
使用Perl循环遍历文件行的最佳防御方式是什么?

我通常使用以下代码循环遍历文件中的行: {{我通常使用以下代码循环遍历文件中的行:}} open my $fh, '<', $file or die "Could not open file $file for reading: $!\n"; while ( my $line = &l...

14得票15回答
我的代码应该有多“防御性”?

我和我的同事讨论过关于代码应该有多少防御性的问题。我非常支持防御式编程,但你必须知道什么时候停止。我们正在开发一个由他人维护的项目,但这并不意味着我们必须检查开发者可能做的所有疯狂的事情。当然,你可以这样做,但这将给你的代码增加非常大的开销。 如何确定限度?

14得票3回答
在C++中使用fstream时如何获得有意义的错误消息

什么是从std :: fstreams中以可移植的方式获取有意义的文件访问错误消息的最佳方法? badbits和failbits的原始程度有点令人烦恼。我之前针对win32和POSIX编写过自己的异常层次结构,那比STL的方式要灵活得多。 我从启用了异常的fstream的downcasted...

12得票9回答
测试用例和断言语句

阅读这个问题的代码让我思考。assert(value>0); //Precondition if (value>0) { //Doit } 我从不写if语句。断言足以/你唯一可以做的就是断言。“早崩溃,经常崩溃”CodeComplete指出:Assert语句使应用程序保持正确性...

12得票2回答
如何在C#中使用Either类型?

Zoran Horvat 提出使用Either类型来避免空指针检查并且在操作执行时不要忘记处理问题。 Either在函数式编程中很常见。 为了阐述其用法,Zoran展示了一个类似于这样的例子:void Main() { var result = Operation(); ...

11得票7回答
如何声明派生的“shell”类,这些类除了作为重命名外什么也不做?

我有两种不同的字符串在我的代码中被传递和使用,它们紧密相关但不应该混淆。我认为通过定义两个类来分别表示这两种字符串,虽然它们都是字符串类型,但是它们有不同的名称,这样方法签名和类型不兼容就会强制执行这两种不同字符串的语义意义,以避免错误。同时,我又不想在成百上千的地方对代码进行重构,例如将so...