defensive-programming相关内容

我什么时候应该使用 Debug.Assert()?

我已经成为专业软件工程师大约一年了,毕业于 CS 学位.我早就知道 C++ 和 C 中的断言,但直到最近才知道它们存在于 C# 和 .NET 中. 我们的生产代码不包含任何断言,我的问题是... 我应该开始在我们的生产代码中使用断言吗?如果是这样,它什么时候使用最合适?这样做更有意义吗 Debug.Assert(val != null); 或 if ( val == null ) ..

0xDEADBEEF 等效于 64 位开发吗?

对于 32 位系统的 C++ 开发(无论是 Linux,Mac OS 或Windows、PowerPC 或 x86) 我已经初始化了指针否则将是未定义的(例如,他们不能立即得到一个合适的值)像这样: int *pInt = reinterpret_cast(0xDEADBEEF); (为了节省打字和成为 DRY 右侧通常会保持不变,例如BAD_PTR.) 如果 pInt 在获得正确值之前 ..
发布时间:2021-11-25 06:18:01 C/C++开发

标识符名称中的数字没有问题吗?

因为在 C\C++\Java - int 2a ;//整数常量上的后缀“a"无效 变体名称的其余部分中的数字没有任何问题,尽管它是有效的语法吗? 喜欢 - int num1 ;int num_1st ;int num_2nd ; 解决方案 我从未听说过任何人(例如,任何编码标准/指南)遇到标识符中的数字问题.尽管如此,它们中的太多可以表明向量或数组可能更可取——即使只有两个 ..
发布时间:2021-09-03 20:40:58 Java开发

防御性编程

在编写代码时,您是否有意识地进行防御性编程以确保高程序质量并避免您的代码被恶意利用的可能性,例如通过缓冲区溢出攻击或代码注入? 您将始终应用于代码的“最低"质量级别是多少? 解决方案 在我的工作中,我们的代码必须是一流的. 因此,我们主要关注两件事: 测试 代码审查 那些把钱带回家的人. ..
发布时间:2021-07-17 20:14:36 其他开发

网站编程漏洞检查表

观看 SO 上线对我来说是一种教育.我想制作一份针对网站的各种漏洞和漏洞利用的清单,以及可以使用哪些编程技术来防御它们. 哪些类别的漏洞? 崩溃站点 闯入服务器 侵入他人的登录信息 垃圾邮件 sockpuppeting、meatpuppeting 等等... 什么样的防御性编程技术? 等等... 解决方案 来自 Open Web Application Secur ..
发布时间:2021-07-17 20:13:05 其他开发

Java中防御性副本的低效率

我是一名长期学习 Java 的 C/C++ 程序员.我已经阅读了有关通过访问器方法返回对私有字段的引用来破坏封装的问题.标准的 Java 解决方案似乎是防御性复制——调用复制构造函数或 clone() 来创建字段的副本并返回对副本的引用.我不明白为什么似乎没有人担心制作防御性副本的效率低下.在 C++ 中,访问器只会返回一个指向 const 的指针,从而保护私有成员而不进行复制.为什么 Java ..
发布时间:2021-06-15 19:41:48 Java开发

用C ++遮盖敏感字符串的技术

我需要在C ++应用程序中存储敏感信息(我想保持私有的对称加密密钥).简单的方法是这样做: std :: string myKey =“您不会猜到的mysupersupersecretpassword"; 但是,通过 strings 进程(或从二进制应用程序中提取字符串的任何其他程序)运行该应用程序将显示上面的字符串. 应该使用什么技术来掩盖此类敏感数据? 编辑: 好的, ..
发布时间:2021-04-19 18:46:56 C/C++开发

当用户在运行时将其文件弄乱时,如何防止桌面应用程序严重损坏?

例如在运行期间删除输出文件,将sw的两个实例定向到相同的IO等吗? 解决方案 您可以采取很多措施来阻止用户这样做,但是您可以应用在两个示例中,您每次访问资源时都必须检测故障情况,并做出适当的反应,要么抛出异常并死亡,要么继续访问该资源. 永远不要假设资源分配会成功,请始终检查您无法控制的内容.简而言之,假设尽可能少,并验证所有内容. '被告知要访问此文件以对其进行写入.它已经开 ..

Kotlin:在界面中指定输入约束

让我们说我有以下接口: 接口MathThing { fun mathFunction(x :Int) } 假设我要对此函数施加的约束是x不能为负。 如何确保每次在MathThing类型的对象上都不满足此(或任何其他任意)条件时, 解决方案 一种方法是对函数参数使用包装器类。您可以创建扩展函数,以便将值传递给该函数更容易一些。 数据类NonN ..

如何检测Qt5中的QObject :: moveToThread()故障?

QObject :: moveToThread()上的文档 Qt5.3 解释说,如果对象具有父对象,则moveToThread()方法可能会失败.如何在我的代码中检测到此失败? 我意识到仅确保对象没有父对象就足够了,但是作为一种防御性编程实践,我想测试所有可能失败的调用的返回值. 编辑:在一些答案之后,我想在此强调一下,我完全知道可以在调用moveToThread之前测试parent是 ..

为什么MVC范例最适合Web应用程序?

我相当确定我的教授会问我为什么选择在我的Web应用程序中使用MVC. 说实话,我是MVC的新手.我读到有关它的信息,正在使用它构建一个博客应用程序,我认为以这种方式解决问题是非常合乎逻辑的. 但是为什么呢? O_O我画了一个空白.比说构建N层应用程序更合适? 解决方案 好吧,基本上是:关注点分离在使用级别上,而不是在物理级别上. 引用基于MVC的PoEAA MVC将 ..

Java String.split是否可以返回null String []

split 是否可以返回null String [] ?我很好奇,因为我想在我的代码中尽可能保持防御,而不必进行不必要的检查。代码如下: String [] parts = myString.split(“\\\\”); 我需要在使用部件 post splitting? 解决方案 它永远不会返回null。如果您不确定,应该始终检查方法的javadoc。例如, S ..
发布时间:2018-12-28 16:30:24 Java开发

复制构造函数和防御性复制

什么是 复制构造函数 ? 有人可以分享一个小例子,可以帮助理解 防御性复制原则 吗? 解决方案 以下是一个很好的例子: class Point { final int x; final int y; Point(int x,int y){ this.x = x; this.y = y; } 点(点p){ this(p.x,p.y); } ..
发布时间:2018-12-04 12:38:18 Java开发

在try / catch块中包装所有内容都构成防御性编程?

我过去3年来一直在编程。当我编程时,我使用来处理所有已知的异常并且优雅地提醒用户。最近看到一些代码包含在try / catch块中的几乎所有的方法。作者说这是防御性程式设计的一部分。我不知道这是真正的防御性编程吗?您是否建议将所有代码放在try块中? 解决方案 我的基本规则是:除非您可以强>引起异常的问题,不要抓住它,让它起泡到可以处理的水平。 根据我的经验,95%的所有catch块 ..
发布时间:2017-10-01 15:14:27 其他开发

什么时候应该使用Debug.Assert()?

一年以来,我一直是专业的软件工程师,毕业于CS学位。我已经知道C ++和C中有一段时间的断言,但是不知道C#和.NET直到最近才存在。 我们的生产代码不包含断言,我的问题是这个... 我应该在我们的生产代码中开始使用Asserts吗?如果是这样,它的使用何时最适合?这样做更有意义。 Debug.Assert(val!= null); 或 if(val ..

埃尔朗的让人失意的哲学 - 适用于其他地方?

不要使用防御性编程 ,而是让程序崩溃(而不是用不必要的守卫污染你的代码,现在我不知道为什么我浪费了这么多年的错误处理这么多的努力! 我想知道的是 - 这种方法只适用于像Erlang这样的平台? Erlang拥有一个虚拟机,具有对过程监控树的简单本机支持,并且重新启动过程真的是。我应该花费我的发展努力(当不在Erlang世界)重新创建监督树,而不是陷入自己的顶级异常处理程序,错误代码,空结果等 ..
发布时间:2017-08-27 11:42:30 Java开发

测试用例VS ASSERTION语句

在我最多的C ++项目中,我大量使用ASSERTION语句如下: int doWonderfulThings(const int * fantasticData) { ASSERT(fantasticData); if(!fantasticData) return -1; // ,,, return WOW_VALUE; } 但是TDD社区似乎喜欢做这 ..
发布时间:2016-10-23 22:40:05 C/C++开发