契约式设计(Design by Contract®)是一种用于开发软件的方法,该方法依赖于为程序的所有部分建立定义良好的接口参数或契约。尽管契约式设计(Design by Contract®)可以被视为通过文档或建模实现的概念性开发风格,但它更广泛...
契约式设计(Design by Contract®)是一种用于开发软件的方法,该方法依赖于为程序的所有部分建立定义良好的接口参数或契约。尽管契约式设计(Design by Contract®)可以被视为通过文档或建模实现的概念性开发风格,但它更广泛地用于指代本机或者某些编程语言中的第三方机制,实际上需要对程序中的契约进行隐式编码。使用Design by Contract®的目的是开发一个程序,并最终以更完整的方式进行编码,从而消除更多的小错误,而支持语言对契约的强制执行使得任何残存的错误都很容易被发现和捕捉。一个使用契约来处理函数和类的程序可以有一个更模块化的设计,在这种设计中,单个类可以很容易地在其他程序中重用,因为它们的契约有明确的定义对于计算机,契约式设计(Design by Contract®)编程原理的基础是现实世界中的业务契约思想。在此模型中,面向对象程序中的每个方法和类都定义了一个契约,与之交互的任何其他方法或对象都必须遵守该契约。每个类还可以有一个称为类不变量的契约,该契约它必须在内部遵循,以确保外部契约不会损害其功能。在设计和编码过程中,契约的两个最重要部分是先决条件和后置条件。契约式设计模式的这两个部分定义了调用方法之前程序的状态和方法完成执行后程序的状态。协定的其他部分可能因实现而异,但可能包括对其他模块的交叉引用、同步条件和执行顺序要求通过为每个类和方法开发契约,可以很容易地映射和预测程序不同部分之间的交互作用。通过使用断言或其他机制强制执行契约,还可以确保程序在违反契约时不会试图执行,因为在该状态下生成的任何输出在技术上都是无效的。当作为母语功能实现时,契约式设计有助于确保最终产品按预期运行,几乎不会出现不可预见的错误。使用契约式设计(Design by Contract®)理念所带来的一些复杂性包括在编码开始之前,系统的设计时间更长,开发更精细,这对于一个大型项目来说有时是困难的,在本机支持契约的编程语言中使用的契约验证机制可能会减慢程序的执行速度。对契约式设计(Design by contract®)方法的理解不足可能导致程序使用契约来执行基本的错误检查,可能导致应用程序在发布后容易突然崩溃
-
发表于 2020-08-07 13:56
- 阅读 ( 606 )
- 分类:电脑网络