11得票14回答
防御式编程

在编写代码时,您是否有意识地进行防御性编程,以确保高质量的程序和避免您的代码被恶意利用,例如通过缓冲区溢出攻击或代码注入?您总是会为您的代码应用最低程度的质量标准吗?

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

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

48得票4回答
Java中的String.split方法是否可能返回一个空的String[]?

调用split方法是否可能返回一个空的String[]数组?我很好奇,因为我想尽可能在我的代码中进行保护而不必进行不必要的检查。以下是示例代码:String[] parts = myString.split("\\w"); 在我使用 splitting 后,我需要执行空值检查吗?

8得票2回答
防御性编程的编辑器模板

最近我在处理FindBugs警告,其中涉及到暴露内部状态的问题,即返回一个数组的引用而不是返回数组的副本。我创建了一些模板来使转换代码更容易。 你创建的支持防御性编程并想与SO社区分享的是哪一个? 迄今为止我创建的模板(作为示例): 创建一个数组副本以从方法中返回: final ${t...

8得票2回答
为什么使用克隆进行防御性拷贝会带来安全问题?

这些天我正在阅读 Joshua Bloch 的《Effective Java》第二版。在第39项中,他提到,如果这些对象后来用于表示类 Foo 的状态,则在给定类 Foo 的构造函数中传递的可变对象的防御性副本是一个好主意。在同样的上下文中,他提到要避免使用非最终类的 clone() 方法,因...

8得票10回答
防御性编程:Java指南

我是来自.NET背景,现在正在涉猎Java。 目前,我在设计API时遇到了防御性地处理错误输入的大问题。假设我有以下代码(足够接近): public void setTokens(Node node, int newTokens) { tokens.put(node, newTok...

45得票12回答
64位开发中的0xDEADBEEF等效值是什么?

对于32位系统的C++开发(无论是Linux、Mac OS还是Windows,PowerPC或x86),我已经初始化了指针,否则它们将是未定义的(例如,它们不能立即获得适当的值),如下所示: int *pInt = reinterpret_cast<int *>(0xDEADBE...

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

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

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

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

7得票9回答
在我抛出异常的情况下,是否应该保留一个无法到达的break语句?

我在一个抛出异常的案例中留下了不可达的break语句,这样做是愚蠢的吗? 从防御性的角度来看,如果逻辑发生改变,我希望它还在那里。 另一方面,我不希望其他开发人员在我的代码上看到编译器警告(“检测到不可到达的代码”)。 switch (someInt) { case 1: ...