- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。
8年前关闭。
如果您必须选择您的 收藏 (聪明的)防御性编码技术,它们是什么?虽然我目前的语言是 Java 和 Objective-C(有 C++ 背景),但可以随意用任何语言回答。这里的重点是巧妙的防御技术,而不是我们这里 70% 以上的人已经知道的技术。所以现在是时候深入挖掘你的技巧了。
换句话说,尝试想到除此之外的其他无趣例子:
if(5 == x)
而不是 if(x == 5)
: 避免意外分配 final
直到您知道需要更改它,此时您可以删除
final
.一个普遍不为人知的事实是,这对方法参数也有效:
public void foo(final int arg) { /* Stuff Here */ }
catch
-block)。
String.substring(start, end)
之类的方法保持一致。以同样的方式运作。您会在 Sun JDK 中发现所有这些类型的方法都以这种方式运行,因为它进行各种操作,包括与数组一致的元素迭代,其中索引从零(包含)到数组的长度(不包含)。
最佳答案
在 C++ 中,我曾经喜欢重新定义 new 以便它提供一些额外的内存来捕获栅栏发布错误。
目前,我更喜欢避免防御性编程,而倾向于 Test Driven Development .如果您在外部快速捕获错误,则无需通过防御性操作来混淆您的代码,您的代码是 DRY -er 并且您最终需要防御的错误更少。
As WikiKnowledge Wrote :
Avoid Defensive Programming, Fail Fast Instead.
By defensive programming I mean the habit of writing code that attempts to compensate for some failure in the data, of writing code that assumes that callers might provide data that doesn't conform to the contract between caller and subroutine and that the subroutine must somehow cope with it.
关于language-agnostic - 最喜欢的(聪明的)防御性编程最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490420/
在嵌入式系统编程的上下文中是否存在普遍差异? 最佳答案 这些不是正式的术语,所以这是相当主观的。 迁移意味着将您的代码库移动到另一个系统(无意返回)。这也可能意味着切换到另一个工具链或编程语言。 移植
听说任何递归算法都可以用栈来表示。最近,我一直在一个可用调用堆栈非常小的环境中编写程序。 我需要做一些深度递归,所以我想知道如何重新设计任何递归算法以使用显式堆栈。 例如,假设我有这样一个递归函数 f
这个问题与语言无关,但受到这些 c/c++ 问题的启发。 How to convert a single char into an int Char to int conversion in C 假设
我最接近汇编的是构建我自己的 Java 类库,它加载类文件并允许您创建、编译和反编译类。在努力完成这个项目时,我想知道 Java 虚拟机实际上是如何在 JIT 优化期间在运行时生成 native 机器
如标题所说的简单问题。我在 StackOverflow(和互联网)上看到了一些关于半字节用例的问题,但我不明白为什么我们需要使用半字节。我的意思是字节是计算中最小的内存单位,因此对它执行操作来操作它的
这真是一个详细的格式问题,但我每次都被它绊倒...... 对于多行条件表达式,逻辑运算符的首选位置是什么? 备选方案 1:每行末尾的逻辑运算符 if (value1 == comparision1 &
计算“2021-01-01 12:56:23.423 UTC”和“2001-01-01 00:00:00.000 UTC”之间的 SI 秒数” 为例。 最佳答案 C++20 可以用下面的语法来完成:
我正在读一本名为“干净的代码”的书,当作者试图讲述我们如何编写一个高效的函数时卡住了。他说,“为了确保我们的函数做”一件事, “我们需要确保我们函数中的语句都处于同一抽象级别”。那么作者究竟想通过抽象
我的网站上有一张相当大的图片(大约 200kb)。我没有计划在不久的将来改变它。我如何告诉浏览器缓存它? 最佳答案 设置正确的标题对您有很大帮助。 过期时间:2012 年 4 月 15 日星期四 20
一般来说,重构工具的优缺点是什么? 最佳答案 优势 如果工具对您有帮助,您更有可能进行重构。 一个工具更有可能在第一次正确地进行“重命名”类型重构。 一个工具可以让您在代码库上进行重构,而无需手动进行
当我第一次开始自学编程时,在完成教程后,我会觉得我仍然无法用语言做任何事情。所以,我环顾四周,想找点事情做。由于我刚刚学习了一些基础知识,因此查找、阅读和添加到一个开源项目中所涉及的工作量似乎是无法克
在我工作的公司,最近要求所有“高度可见”的 bool 逻辑必须以析取范式表示。 例如(尽管这个概念与语言无关), #if (defined(A) || defined( B )) || (define
我想知道我们如何在 mathematica 中设计一个魔方。这可能吗?我们如何使用它。我们如何决定立方体的 6 个面上的较小立方体的不同分隔。 最佳答案 您问的是如何定义数据结构。您的选择是任意的,只
对于具有系统托盘图标的应用程序的行为方式,是否有任何标准? 我最近编写了一个应用程序,它大部分时间都位于系统托盘中。我把它交给了一个 friend ,她的第一 react 是双击图标进入主窗口(工作正
一个商业可分发软件的文本长度和/或音频片段长度是多少才能通过合理使用的阈值并侵犯所包含作品的版权?归属是否可以免除开发者的侵权行为?一个例子是在启动屏幕上使用的小说中的引用。 最佳答案 不幸的是,没有
我是一名经验丰富的 C/C++/C#/Objective-C 桌面、Web 和移动程序员,我已经习惯于从头开始构建我的大部分软件。我已经使用 ASP.NET 从头开始构建了我的所有网站。对于我想测
我一直在阅读有关使用矩阵转换 Vector3 的内容,并且正在努力深入研究数学并自己编写代码而不是使用现有代码。无论出于何种原因,我的学校类(class)从未包括矩阵,所以我正在填补我的知识空白。谢天
所以我目前正在尝试掌握递归的概念,我理解我遇到的大部分问题,但我觉得它的使用似乎不适用于太多计算问题。不过,这只是一个新手的假设,所以我问,作为程序员,递归有很多实际用途吗?还有,用它可以解决哪些典型
我正在学习递归。我已经使用递归解决了一些其他问题,例如创建二叉树、汉诺塔等。所以,我明白什么是递归,但我发现自己很难规划和实现正确的递归解决方案。 是否有任何关于规划、思考或实现问题递归解决方案的一般
每次我需要移动到一台新机器,或者买一台笔记本电脑,或者通过不断的安装和卸载搞砸我的注册表时,我开始变得非常厌烦和厌倦设置我的所有开发工具。 这么新的计划。我听说有人虚拟化他们的开发环境,这听起来是个好
我是一名优秀的程序员,十分优秀!