什么是防御性编程?(defensive programming?)

防御性编程是为计算机软件创建代码,旨在避免出现问题,使产品更稳定。这种方法背后的基本思想是创建一个程序,该程序即使在不可预见的进程中或在用户做出不可预见的输入时也能正常运行。防御性编程通常依赖于某种似是而非的组合,即消除不必要的代码,同时确保生成足够的代码来处理所有可能的用户操作。广泛的测试对于该过程也很重要,创建易于审核和检查的软件也很重要。...

防御性编程是为计算机软件创建代码,旨在避免出现问题,使产品更稳定。这种方法背后的基本思想是创建一个程序,该程序即使在不可预见的进程中或在用户做出不可预见的输入时也能正常运行。防御性编程通常依赖于某种似是而非的组合,即消除不必要的代码,同时确保生成足够的代码来处理所有可能的用户操作。广泛的测试对于该过程也很重要,创建易于审核和检查的软件也很重要。

Software testing is one of the most important aspects of defensive programming.

在许多方面,防御性编程的概念与防御性驾驶的概念非常相似,因为问题在出现之前就已经被考虑过了。尝试这样做的一种常见方法是通过创建代码来处理任何可能抛出的场景。程序员通常试图确定用户可能输入的方式,或者尝试使用超出预期参数的软件。防御编程的使用是建立在代码本身的基础上的,它被设计成能够处理奇怪的输入而不会崩溃或遇到错误事件。

Defensive programming may be used to eliminate unnecessary code.

然而,与防御性编程的这一元素相比,编写良好的代码需要没有不必要的条目。作为程序一部分的代码行越多,引入错误的机会就越多。防御性编程实践通常鼓励开发人员尽可能消除不必要的代码并简化程序。因此,必须在考虑意外情况的编程和包含太多不必要内容但没有提供好处的代码之间取得平衡。

测试是防御性编程最重要的方面之一。尽管在确保代码完美方面付出了大量努力,但开发人员几乎总是会错过一个错误,或者创建出具有意外结果的代码。由专业测试人员进行的全面测试允许开发人员在软件发布之前有数百小时的产品使用时间来发现错误。

在防御性编程中创建的代码本身也是此过程的一个重要方面。它不仅应尽可能精简,而且还应以清晰简洁的方式呈现。开发人员经常使用审计来审查已创建的代码。这允许其他程序员看到已经完成的工作,可读代码对于这成为开发的现实部分很重要。

  • 发表于 2021-12-13 13:26
  • 阅读 ( 157 )
  • 分类:互联网

你可能感兴趣的文章

函数式程序设计(functional programming)和命令式程序设计(imperative programming)的区别

...式的命令式编程 6.摘要 什么是函数式程序设计(functional programming)? 函数式程序设计是以数学为基础的。函数式编程背后的关键原则是,所有的计算都被看作是独立数学函数的组合。数学函数将输入映射到输出。假设有一个函数...

  • 发布于 2020-10-19 02:12
  • 阅读 ( 479 )

结构化的(structured)和非结构化编程(unstructured programming)的区别

结构化的(structured)和非结构化程序设计(unstructured programming)的区别 计算机程序是计算机执行用编程语言编写的任务的一组指令。编程范例可以根据语言特性对编程语言进行分类。结构化编程和非结构化编程是两种常见的编程...

  • 发布于 2020-10-24 05:09
  • 阅读 ( 487 )

什么是防卫方式(defense mechanisms)

“什么是防御机制?”对你来说可能是一个非常奇怪的问题,需要答案。人类的思想当然是非常迷人的。我们的身体对各种情况做出反应,使我们能够尽可能正常和有效地工作,这几乎是奇迹。即使是在处理焦虑时,人...

  • 发布于 2021-06-27 02:37
  • 阅读 ( 331 )

防御(defence)和防守(defense)的区别

主要差异防御(main difference defence) vs. 防守(defense) 你可能经常想知道防御和防御的区别。防御和防御的区别在于它们的拼写。美国英语优先使用防务英语,而英语和其他英语变体(如加拿大、澳大利亚和印度)优先使用防务英语...

  • 发布于 2021-06-27 19:16
  • 阅读 ( 318 )

编码(coding)和编程(programming)的区别

...逻辑。总的来说,编码是编程的一个步骤。 什么是编程(programming)? 与编码相比,编程是一个更广泛的概念。程序设计是为计算机执行一项任务而设计和开发程序的整个过程。第一步是找出问题所在。下一步是做分析。这涉及到...

  • 发布于 2021-06-30 22:23
  • 阅读 ( 473 )

脚本语言(scripting language)和程序设计语言(programming language)的区别

...l、PHP、Python和Ruby就是一些例子。 什么是程序设计语言(a programming language)? 程序设计语言是一种正式的语言,可以用来创建计算机程序来指示计算机执行任务。编程语言可以是高级语言,也可以是低级语言。 高级语言更易于程...

  • 发布于 2021-07-01 02:49
  • 阅读 ( 263 )

函数式程序设计(functional programming)和面向对象程序设计(object oriented programming)的区别

...程、多态性、递归函数 什么是函数式程序设计(functional programming)? 函数式编程允许使用数学函数构建程序。换句话说,它将程序绑定为纯数学函数样式。使用函数式编程,开发人员可以将一个程序构建为单独数学函数的组合。...

  • 发布于 2021-07-01 17:38
  • 阅读 ( 899 )

源程序(source program)和目标程序(object program)的区别

...键术语 编译器,目标程序,源程序 什么是源程序(source program)? 源程序或源代码是由程序员编写的原始程序。它是基于文本的文档。在源程序中,程序员编写计算机应该执行的指令。他使用计算机编程语言如Java、C#.NET等编写这...

  • 发布于 2021-07-02 02:21
  • 阅读 ( 983 )

什么是陷阱防御?(the entrapment defense?)

诱捕是在刑事法庭上,当政府代理人诱使被告犯罪时使用的一种辩护。在美国的法律体系中,圈套防御是对政府代理人和官员权力的制衡。 关键收获:陷阱防御 诱捕是一种肯定的抗辩,必须有大量证据证明。 为了证明诱...

  • 发布于 2021-09-24 05:38
  • 阅读 ( 213 )

什么是约束编程?(constraint programming?)

约束编程是一种声明式编程,它使用数学约束来定义程序中变量之间的相互关系。这些类型的编程技术通常与其他类型的编程技术交互,例如逻辑和命令式技术。这些逻辑...

  • 发布于 2021-12-13 11:36
  • 阅读 ( 398 )