gpt4 book ai didi

java - 让私有(private)方法返回 String 而不是传递 StringBuilder 的优缺点是什么

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:12 24 4
gpt4 key购买 nike

<分区>

考虑一个带有“buildMessage”方法的类(类似于):

public class MessageBuilder {
public String buildMessage() {
//Build up the message and return
//
//Get the header
//Get the body
//Get the footer
//return
}
}

当我们构建消息时,最好使用 StringBuilder(或类似的缓冲对象)构建字符串,而不是仅仅将一堆字符串连接在一起。但这是否意味着您失去了返回 String 而不是将 StringBuilder 作为参数的好处?

换句话说,这读起来很好,也很容易理解:

private String getHeader() {
StringBuilder builder = new StringBuilder();
builder.append("Hello ")
.append(this.firstname)
.append(",\n");
return builder.toString();
}

这对我来说似乎比被迫传入 StringBuilder 更自然,但我们也可以这样写:

private void appendHeader(StringBuilder builder) {
builder.append("Hello ")
.append(this.firstname)
.append(",\n");
}

第一个选项可以使用“get”方法,即使其目的不是将返回值附加到缓冲区。它还使公共(public)方法易于理解:

public class MessageBuilder {
public String buildMessage() {
StringBuilder builder = new StringBuilder();
builder.append(getHeader())
.append(getBody())
.append(getFooter());
return builder.toString();
}
}

虽然使用第二个选项会导致:

public class MessageBuilder {
public String buildMessage() {
StringBuilder builder = new StringBuilder();
appendHeader(builder);
appendBody(builder);
appendFooter(builder);
return builder.toString();
}
}

我的问题是第一个选项是否遇到与“连接”+“字符串”+“在一起”相同的内存问题。我很想听听关于哪个读起来更好的意见(因为如果有一个明显的赢家关于哪个更干净、更容易阅读,那将对它产生很大的影响),但我也对它的效率感到好奇。我怀疑几乎没有区别,但想知道是否有人“知道”与每种方法相关的成本 - 如果是您,请分享!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com