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

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

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

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

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

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

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

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

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

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

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

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

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

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

341得票24回答
使用大括号(即{})来包含单行if或循环的目的是什么?

我正在阅读一些C ++讲师的讲义,他写了以下内容: 使用缩进 // 好的 永远不要依赖于运算符优先级 - 始终使用括号 // 好的 即使只有一行也要使用 { } 块 // 不好,为什么? 比较中将 const 对象放在左侧 // 好的 对于变量大于或等于0,请使用...

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

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

11得票14回答
防御式编程

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