解决方案 »

  1.   

    这不光是效率不效率的问题,是个逻辑问题,A的写法把这个test当作一个运行条件,B是把他的!当作异常;先处理
    B是明显好于A的,你这个例子可能还显示不太出来,但如果像这种test有很多时,照A的写法很容易得到类似于if (!...) {
      if (!...) {
        if (!...) {
          if (!...) {
            ...
          }
        }
      }
    }
    但用B的写法却是if(...) {
      throw exception
    }
    if(...) {
      throw exception
    }
    if(...) {
      throw exception
    }
    if(...) {
      throw exception
    }
    ...
    先处理异常情况,再做主线逻辑处理。无论在代码可读性还是逻辑上都要更好。即便真的要讨论效率问题,A压栈操作要比B多很多,越复杂的情况越能体现出来.