11得票14回答
防御式编程

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

11得票2回答
防御式编程和异常处理

几天前,我在考试中遇到了以下理论问题: (a) 在处理程序执行期间可能发生的异常情况时,请解释什么是防御性编程。您可以参考在课堂上看到的示例或使用伪代码描述在尝试读取文件时防止某些情况发生的步骤。 [5分] (b) 简要概述Java中异常处理的一般含义以及这与防御性编程的区别。 [5分] ...

11得票3回答
使用 Vala 进行日志记录

我刚开始学习Vala编程,有Java和.NET方面的经验。但我找不到有关如何使用Vala记录日志的有用信息。是否有类似于log4j或log4net的有用日志记录工具,或者建议采用哪种方式在Vala中进行记录,以实现多个不同日志级别,例如错误、警告、调试和跟踪? 那么有关防御式编程,例如断言和契...

10得票1回答
避免在结构模式匹配中发生意外捕获。

这个例子被认为是使用模式匹配时可能会遇到的“陷阱”: NOT_FOUND = 400 retcode = 200 match retcode: case NOT_FOUND: print('not found') print(f'Current value o...

10得票2回答
JavaScript反静默技术以指示失败

在JavaScript中,除了依靠null和undefined来报告错误以外,有什么更好的方法可以报告错误,当函数无法继续向前时。我能想到三种方法: 什么都不做 抛出异常 断言 这里有一个简单的示例场景-一个函数通过传递的金额为用户账户充值。 函数credit是Account对象的一部...

9得票5回答
测试用例与断言语句

在我的大部分C++项目中,我经常使用ASSERTION语句,如下所示: int doWonderfulThings(const int* fantasticData) { ASSERT(fantasticData); if(!fantasticData) re...

8得票8回答
clone()方法真的有用吗?在getter/setter中采用防御性拷贝呢?

人们真的会用到防御性getter/setter吗?对我来说,99%的情况下,您打算将在另一个对象中设置的对象复制为相同的对象引用,并且您打算对其进行的更改也将在设置它的对象中进行。如果您setDate(Date dt)并稍后修改dt,谁在乎呢?除非我想要一些基本的不可变数据bean,它只具有原...

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

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

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

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

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

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