Questions tagged «defensive-programming»

23
在单行if或loop中使用大括号(即{})的目的是什么?
我正在阅读我的C ++讲师的一些讲义,他写了以下内容: 使用缩进//确定 从不依赖运算符优先级-始终使用括号//确定 始终使用{}块-即使仅一行// 也不行,为什么? 比较左侧的常量对象//确定 使用unsigned表示> = 0 //好的技巧 删除后将Pointer设置为NULL-双重删除保护//不错 第三种技术对我来说还不清楚:将一行放置在a中会得到{ ... }什么? 例如,使用以下奇怪的代码: int j = 0; for (int i = 0 ; i < 100 ; ++i) { if (i % 2 == 0) { j++; } } 并替换为: int j = 0; for (int i …

20
什么时候应该使用Debug.Assert()?
我已经获得CS学位,现在已经是专业软件工程师大约一年了。我已经在C ++和C中了解断言了一段时间了,但是直到最近才完全不知道它们存在于C#和.NET中。 我们的生产代码不包含任何断言,我的问题是…… 我应该在生产代码中开始使用Asserts吗?如果是这样,什么时候最合适使用它?这样做更有意义吗 Debug.Assert(val != null); 要么 if ( val == null ) throw new exception();

14
C ++中隐藏敏感字符串的技巧
我需要在我的C ++应用程序中存储敏感信息(我想保持私有的对称加密密钥)。简单的方法是这样做: std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess"; 但是,在整个strings过程中运行该应用程序(或从二进制应用程序中提取字符串的任何其他程序)将显示上述字符串。 应该使用什么技术来掩盖此类敏感数据? 编辑: 好的,几乎所有人都说过“您的可执行文件可以进行反向工程” -当然!这是我的宠儿,所以在这里我要大声疾呼: 为什么在该站点上所有与安全相关的问题中有99%(好的,所以我可能会夸张地说)用“没有可能创建完美安全的程序的方法”的洪流回答-这无济于事回答!安全性是介于完美可用性和一端没有安全性,而另一端是完美安全性却没有可用性之间的滑动标度。 关键是要根据您要执行的操作以及软件运行的环境,在此滑动标尺上选择位置。我不是在为军事安装编写应用程序,而是在为家用PC编写应用程序。我需要使用已知的加密密钥在不受信任的网络上加密数据。在这些情况下,“通过隐蔽性实现安全”可能就足够了!当然,有足够时间,精力和技能的人可以对二进制文件进行反向工程并找到密码,但是您猜怎么着?我不在乎: 实施一流的安全系统所花的时间要比由于破解版本而导致的销售损失要昂贵得多(不是我实际上是在出售此产品,但我明白了)。至少可以这样说,在新程序员中,这种蓝天式的“让它以绝对最佳的方式做到这一点”的趋势是愚蠢的。 感谢您抽出宝贵的时间来回答这个问题-他们最有帮助。不幸的是,我只能接受一个答案,但是我投票赞成所有有用的答案。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.