代码之家  ›  专栏  ›  技术社区  ›  DarkLeafyGreen

交换if语句

  •  3
  • DarkLeafyGreen  · 技术社区  · 14 年前

    我正在研究代码最小化和增强。我的问题是:是否可以在不破坏代码逻辑的情况下交换上面的if语句?

        int c1 = Integer.parseInt(args[0]) ;
        int c2 = Integer.parseInt(args[1]) ;
        int c3 = Integer.parseInt(args[2]) ;
    
        if (c2-c1==0)
          if ( c1 != c3 )
    

    有什么想法吗?

    5 回复  |  直到 14 年前
        1
  •  10
  •   Martijn    14 年前

    我不明白你为什么要 (c2 - c1 == 0) 而不是 c1 == c2

    if ((c1 == c2) && (c1 != c3)){
      do_stuff();
    }
    

    if ((c1 != c3) && (c1 == c2)){
      do_stuff();
    }
    

    路线

    另外请注意,这是一个微观优化,你不应该考虑速度。

    第三点,如果你的程序没有做任何其他的事情,如果这个条件不成立,并且你真的想进行微观优化(你没有),我建议在你知道需要参数之前不要分析它们。如果c1在大多数情况下不等于c2,那么您可以等待解析c3,直到您知道必须检查它为止。这是严格的理论。在实践中不要这样做,因为这样会使代码更难阅读。尽快将所有的命令行变量处理为合理的值要清楚得多。

        2
  •  3
  •   Adeel Ansari    14 年前
    int c1 = Integer.parseInt(args[0]) ;
    int c2 = Integer.parseInt(args[1]) ;
    int c3 = Integer.parseInt(args[2]) ;
    
    if (c2 == c1 && c1 != c3 ) {
       ...
    }
    
        3
  •  1
  •   ob1    14 年前

    对。 if ((c2-c1==0) && (c1 != c3)) .

        4
  •  1
  •   thelost    14 年前

    如果你是说

    if ((c1 != c3) && (c2-c1==0))
    

    c2-c1==0 那是的。

        5
  •  1
  •   lbedogni    14 年前

    if (c2-c1==0 && c1 != c3 )
    

    或者,如果你想交换它们,

    if (c1 != c3 && c2-c1==0)