美文网首页
避免程序Bugs

避免程序Bugs

作者: Magicknight | 来源:发表于2017-09-10 12:10 被阅读7次

避免Bugs

  1. 使用静态和动态检测以及不可改变性
  2. 开启断言减少程序bug
  3. 迭代式开发,(单元测试和回归测试)
  4. 模块化和封装化

什么时候开启断言

  • 方法的参数
/**
 * @param x  requires x >= 0
 * @return approximation to square root of x
 */
public double sqrt(double x) { 
    assert (x >= 0)):"x is" + x;
  }
  • 方法的返回值
public double sqrt(double x) {
    assert x >= 0;
    double r;
    ... // compute result r
    assert Math.abs(r*r - x) < .0001;
    return r;
}
  • 覆盖所有的可能

如果if和switch没有覆盖所有的可能,可以使用断言来阻塞不合法的可能

switch (vowel) {
  case 'a':
  case 'e':
  case 'i':
  case 'o':
  case 'u': return "A";
  default: assert false;
}

关闭断言的情况

  1. 不要使用断言来测试外部的变量(如外部文件是否存在、网络是否可用、用户的输入是否正确)
  2. 测试时需要开启断言,给用户的时候关闭。

模块化和封装化

  • 变量的范围应该最小化
  • 声明循环的变量应该在循环内声明
  • 在变量要使用的地方声明
  • 避免全局变量

相关文章

  • 避免程序Bugs

    避免Bugs 使用静态和动态检测以及不可改变性 开启断言减少程序bug 迭代式开发,(单元测试和回归测试) 模块化...

  • Hungry sausage-Eating insects

    Sausages like to eat bugs. If there are bugs flying over ...

  • GMAIL SPDY V3 header decompress

    Wireshark · Wireshark-bugs: [Wireshark-bugs] [Bug 10528] ...

  • Bugs

    1. Server Tomcat v9.0 Server at localhost failed to start...

  • Bugs

    【日期】:2004-08-17 【问题】:当解码 Q.931 信令时无限循环 【原因】:当在Q.931信令中发现一...

  • [Bugs]

    [杂项][BUG]python 中debug出现ImportError: cannot import name c...

  • find-sec-bugs

    简介 find-sec-bugs 即 Find Security Bugs,是SpotBugs的一款插件,用于Ja...

  • 微信小程序的开发学习建议和入门项目

    今天微信小程序有更新了,新增了大量的接口,同时修复了比较多的bugs,增加分享,扫一扫等功能。 应该说小程序可以开...

  • Bugs inside

    真实意识到自己的嫉妒之心,仅仅因为很多人帮她点赞我便开始去比较记恨起一些人了。 她们更喜欢她,也更信任她,这也许是...

  • python bugs

    操作mysql数据库报错Incorrect string value Django之TIME_ZONE初探 关于P...

网友评论

      本文标题:避免程序Bugs

      本文链接:https://www.haomeiwen.com/subject/inbzjxtx.html