f1(),f2(),f3()都是bool类型的函数,我现在要下面三个都成立才执行do(),下面哪种风格比较好?
A .if(f1()&&f2()&&f3()) do();
B.if(f1())
    if(f2())
      if(f3))
         do();如果我3个函数执行时间都比较长,是不是第二个比较好还是A方法就相当于B方法??

解决方案 »

  1.   

    and是一样的,要全部执行才能进行判断,or遇到第一个true后面就不会执行了
      

  2.   

    and 遇到第一个false后面就不会执行了,没有这个功能??
      

  3.   

    http://bbs.csdn.net/topics/390332540?page=1#post-393345808
      

  4.   

    除非特别特别特别注意performance的地方,这种地方不会是性能瓶颈的。
    因此,一般都看哪种可读性最好。
    我觉得前者更好点。
      

  5.   

    两种写法的结果是不是一样,要看具体的语言,比如对于VB6来说,第二种写法的执行效率就要高些,而对于C#来说,效率是一样的,因为C#的&&是短路运算符,从两种写法的反汇编代码来看,对应的汇编码也是一样的。我觉得第一种写法更简洁些。如果f1,f2,f3三个函数的执行速度有差别,建议将执行最快的放在最前面,比如 如果执行速度  f3>f1>f2,则比较优化的方式是 :.if(f3()&&f1()&&f2()) do();
      

  6.   

    如果 B 下面的没有其他的else分支的话,显然选A,可读性好
      

  7.   

    他说的是&&和||两种情况~~你还没睡醒~鉴定完毕~!||的话,尽可能将容易为FALSE的写在前面。其实楼主说的两种写法无论是&&还是||都是一样。没什么区别。个人风格不一样而已
      

  8.   

    f1,f2,f3的命中率与顺序对效率有影响