自定义方法连接字符串与不使用该方法

时间:2016-07-13 12:36:32

标签: java performance

我有这样的代码:

private static final String BR_TAG = "<br/>";

private ResourceBundle rb;

public String create(){
   String result = addLine("some text");
   result = addLine("some text");
   result = addLine("some text");
   ....
}

public String addLine(String text){
    return rb.getString(text) + BR_TAG; 
}

这是我目前的代码,但它是最佳的吗?也许我不应该使用单独的方法为我的结果添加行?没有方法addLine,我可以这样做这个:

public String create(){
   String result = rb.getString("some text") + BR_TAG;
   result = rb.getString("some text") + BR_TAG;
   result = rb.getString("some text") + BR_TAG;
   ....
}

或者我可以考虑将StringBuilder传递给我的方法的第三个选项:

public String create(){
   StringBuilder sb = new StringBuilder();
   addLine("some text", sb);
   addLine("some text", sb);
   ....
}

public void addLine(String text, StringBuilder sb){
    sb.append(rb.getString(text)).append(BR_TAG); 
}

您认为哪种选择最好?

1 个答案:

答案 0 :(得分:2)

为什么不使用其他方法?

IMO,就代码之美而言,两者都不是最好的。但就性能而言,第三种情况更好,因为StringBuilder在使用很多次时花费的时间少于+

为了让您的代码看起来更漂亮,也许可以使用Builder模式?

public class LineBuilder {
    private StringBuilder builder;
    private static final String BR_TAG = "<br/>";

    public LineBuilder() {
        builder = new StringBuilder();
    }

    public LineBuilder addLine(String text) {
        builder.append(text).append(BR_TAG);
        return this;
    }

    public String build() {
        return builder.toString();
    }
}

您还可以添加addHeaderaddStrong添加<h1><strong>标记的其他方法。

你可以像这样使用它:

String result = new LineBuilder()
    .addLine("Hello")
    .addLine("World")
    .addLine("Bye!")
    .build();

看起来更好!