Java 将自定义方法转换为concat字符串vs不使用该方法
我有这样一个代码:Java 将自定义方法转换为concat字符串vs不使用该方法,java,performance,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 a
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;
}
String result = new LineBuilder()
.addLine("Hello")
.addLine("World")
.addLine("Bye!")
.build();
或者我可以考虑将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);
}
你认为哪种方法最好?为什么不使用另一种方法 在我看来,就代码的美而言,两者都不是最好的。但就性能而言,第三个更好,因为当大量使用时,
StringBuilder
比+
花费的时间更少
为了让你的代码看起来更漂亮,可以使用生成器模式吗
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();
}
}
看起来好多了 根据您的第三个选项,
StringBuilder.apend()
不会返回String
,它会返回StringBuilder
的实例。与仅串联字符串相比,StringBuilder通常是更好的选项。您可能应该问自己:为什么我的Java代码中甚至有标记。通常最好将标记(HTML)与实际的源代码分开,因此考虑移动到JSP或其他形式的模板引擎。“我知道,SRY是快速复制粘贴;”@直到Helge你是对的,但我别无选择,我正在实现一些发送邮件的接口,这些接口要求返回包含邮件全部内容的字符串。@KamilRuszczyk没有任何东西阻止你将标记提取到某种形式的模板中并使用它。我确实意识到,公司的要求有时不允许使用干净的解决方案,但在这种情况下,这应该没有那么难但是发送邮件总是很“有趣”,所以祝你好运。
String result = new LineBuilder()
.addLine("Hello")
.addLine("World")
.addLine("Bye!")
.build();