0

对于以下代码,我需要一个建议(在 java 和 .net 中)。

 public void method(bool value)
 {
     String someString;

     //some code

     if (value)
     {
          //some code
          ...
         someString = "one" + value;              
     }
     else
     {
         //some code
         ...
         someString = "two" + value;
     }

 }

哪一个是可取的,为什么?像上面这样的代码或像这样的代码

someString = "onetrue";
someString = "twofalse";
4

3 回答 3

1

JDK编译优化后method如下图:

public static String method(boolean value) {
    String someString;

    if (value) {
        StringBuilder sb = new StringBuilder();
        sb.append("one");
        sb.append(value);
        someString = sb.toString();
    } else {
        StringBuilder sb = new StringBuilder();
        sb.append("two");
        sb.append(value);
        someString = sb.toString();
    }
    return someString;
}

如果此代码被非常频繁地调用,与第二个版本相比,它可能会带来性能影响。在每种情况下,都会构造一个新的 StringBuilder 并在其上调用三个方法。并且 boolean 应该在调用之前转换为对象append。而在第二个版本中,我们只返回常量。一切都取决于调用此代码的频率。

于 2013-04-22T08:35:46.607 回答
0

两者都不会有任何区别,它是纯粹的风格。

既然你有// some other code我就坚持第一个。如果您在每个分支中只有一条线,那么任何一条都可以。

于 2013-04-17T23:59:38.517 回答
0

在高层次上它们都是相同的,但如果你往下看,我建议使用以下方法:

someString = "onetrue";

someString = "twofalse";

这是因为当你做 "one" + value 时,该值实际上是一个 bool,并且toString()会调用 bool 对象的方法来添加到字符串中。基本上只是添加另一个步骤,而不是仅指定要添加到字符串中的内容。

于 2013-04-18T00:06:41.710 回答