mar*_*lon 4 string stringbuilder intellij-idea
我下面的方法需要返回一个由字符串连接而成的字符串。
StringBuilder sb = new StringBuilder();
sb.append("count: ").append(this.count()).append( "\n");
return sb.toString();
在 IntelliJ 中,代码检查建议我用如下所示的字符串替换此 StringBuilder:
String sb = "count: " + this.count() + "\n";
return sb
我的印象是 StringBuilder 应该与append方法一起使用,以用加号替换字符串连接。这个代码检查建议在 IntelliJ 中有意义吗?
您的假设是正确的,大多数 IntelliJ检查鼓励您以“更好”的方式做事。
然而,这并非总是如此。特别是在某些检查“双向”工作的情况下 -> 您必须对什么是“更好”进行自己的判断。
在这种情况下,如果您以普通的连接字符串开始:
    return "count: " + count + "\n";
有一些可用的检查 - 将光标放在上面"count: "并按 Alt-Enter:
如果您选择选项 (2),您将得到:
    return new StringBuilder().append("count: ").append(count).append("\n").toString();
现在,您可以再次使用 alt-enter 来选择“Replace StringBuilder with String”来反转更改。
在这种情况下,您发现了双向的检查/重构:它是双向的。其他重构(例如“封装”)仅以一种方式起作用。
至于什么是“更好” - 您必须权衡性能StringBuilder与可读性和简单性,并自己做出判断 - IntelliJ 只是提供方便的检查来帮助您;)
| 归档时间: | 
 | 
| 查看次数: | 4021 次 | 
| 最近记录: |