避免程序Bugs

2017-09-10  本文已影响7人  Magicknight

避免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. 测试时需要开启断言,给用户的时候关闭。

模块化和封装化

上一篇下一篇

猜你喜欢

热点阅读