网站大量收购独家精品文档,联系QQ:2885784924

《-基于契约编程-实践》-课件设计(公开).pptVIP

《-基于契约编程-实践》-课件设计(公开).ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * Design by Contract — Practice 郭东伟 Language Support in C/C++ 和其他语言相比,C/C++特别注重效率,因此不受任何程序员控制的运行期内部检查机制 如:指针检查、数组下标检查、运行期类型检查等 断言的使用(非关键字) assert ASSERT assert()用法 assert宏的原型定义在assert.h中,其作用是如果它的条件返回错误,则终止程序执行 一般在Debug版有效,在Release版不起作用 用法: 在函数开始处检验传入参数的合法性 每个assert最好只检验一个条件 不要使用有副作用的语句 assert和后面的语句应空一行,以形成逻辑和视觉上的一致感 有的地方,assert不能代替条件过滤 例子 double sqrt(double x) { assert( x=0 ); //pre-condition //.... //.... //.... assert( fabs(y*y-x) eps ); //post-condition return y; } ASSERT和VERIFY 在VC环境下一般使用ASSERT和VERIFY 在Debug模式下作用基本一致,二者都对表达式的值进行计算,如果值为非0,则什么事也不做;如果值为0,则输出诊断信息。 在Release模式下效果完全不一样。ASSERT不计算表达式的值,也不会输出诊断信息;VERIFY计算表达式的值,但不管值为0还是非0都不会输出诊断信息。 因为 VERIFY() 违反了断言的思想,不能使程序代码和调试代码完全分离,最终可能会带来很多麻烦。因此,建议尽量少用不用这个宏。 Assert方式的缺点 不能直观地掌握出错地点 不能被捕获和重新处理 出错时不一定要中止,可能上层调用能够解决 如打开文件 在Debug版对性能有一定影响 Language Support in Java assert Expression1; assert Expression1 : Expression2 ; 语法: Expression2 can be any primitive type 从J2SE1.4之后,Java提供一些断言的支持,使用assert保留字 Expression1 must have type boolean or a compile-time error occurs. enabled or disabled 两种形式的 assert. e.g. it could serve as a unique integer code for the assertion Semantics: If assertions are disabled in a class, the assert statements contained in that class have no effect. If assertions are enabled, Expression1 is evaluated: — If it evaluates to false, an AssertionError is thrown. — If Expression1 evaluates to true, Expression2 is not evaluated. If Expression2 is present, then this is evaluated and passed to the constructor of the AssertionError; otherwise the parameterless constructor is used. assert Expression1; assert Expression1 : Expression2 ; new AssertionError(value) returns an assertion error that has the string representation of the value as the errors detail message. If an exception is thrown while either expression is being evaluated, the assert statement completes abruptly, throwing this exception. Although the assert construct is not a full-blown DbC facility, it ca

您可能关注的文档

文档评论(0)

沙卡娜 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档