CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

JAVA-在分支处理时遗漏条件

作者: 黑咖啡,  出处:IT专家网, 责任编辑: 李春禹, 
2008-01-02 14:10
  通过判断评价值为真的行各命题的真伪,就可以按三个命题被分解的形式确认条件式C是否表达了我们的的意图。为了编写else if 或者 else语句,从而避免条件遗漏时,只要针对评价值为假的行编写条件表达式即可。有代表性的例子是变量值的变化,文件读写等。

  说明:在if或者switch等控制命令中,把应该考虑到的条件遗漏掉,是比较典型的Bug。特别是,某些类型的条件遗漏,在以正常系为核心的测试中往往很难发现,却非常可能在产品交付后发现是致命的Bug,所以需要特别加以留意。

  为了不遗漏条件,必须注意以下2点:

  1. 编写正确的条件式

  为了“写出正确的条件式”,需要通过条件式的变换来验证写出的条件式是否表达了我们本来的意图(参考补充说明)。

  在此基础上,如果构成条件的表达式非常复杂,就需要使用真值表对条件式构成及关系进行整理(参考补充说明表)。

  2. 没有遗漏地编写条件

  为了“没有遗漏地编写条件”,下面几点非常重要:

  ① 设计时进行充分的讨论(这点最为重要)。

  ② 实现时,特别注意与if相应的else有没有,与switch相应的default分支是否存在。如果没有,则需要明确理论,明确没有的理由。

  参考:检查编写的理论表达式是否覆盖了所有条件的方法

  把条件翻转过来考虑就可以了。比如说,“ A || B || C”这样一个条件,就考虑翻转之后的”(!A)&&(!B)&&(!C)”。

  如果能够找到满足这个翻转后条件的输入,则说明还没有覆盖所有的条件。

  例:没有能够覆盖所有条件的情况

  switch (status) {
  case STATUS_INIT;
  …
  break;

  …

  // ERROR: 没有记述default的情况

  } // 究竟是忘了写呢,还是根本不会发生default的情况呢?这里无法判断

  


  If ( variable < constantVar2) {
  …
  } else if (variable < constantVar3) {
  …
  } // ERROR:没有相应的else
  // 究竟是忘了写呢,还是根本不会发生else的情况呢?这里无法判断

  补充说明:使表达式更容易理解的方法 以及 返回真假值方法的注意点

  在编写表达式时同时编写多个表达式,从中选择一个最容易理解的即可。

  有些条件是可以用多个表达式来编写的。例如下面这两个表达式是等价的。

共2页。 1 2 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i