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

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

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

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

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

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

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

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

11得票14回答
防御式编程

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

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

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

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

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

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

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

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

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

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

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