开始;只是因为一个可以这样做并不总是意味着一个应该这样做。我将使用代码段来解释我的问题:
private StringBuffer sb = new StringBuffer(); //Using StringBuffer because it is thread safe
... /*append to sb in methods etc*/ ...
public String getSbValue() {
try {
return sb.toString();
} finally {
sb = new StringBuffer(); //or sb.delete(0, sb.length()); ?
}
}
这是一种好的还是坏的做法,或者都不是?
或者我应该这样做:
public String getSbValue() {
String ret = sb.toString();
sb = new StringBuffer(); //or sb.delete(0, sb.length()); ?
return ret;
}
致以最诚挚的问候,
安德烈
答案 0 :(得分:2)
这显然是非常主观的。我个人发现使用finally
难以遵循的非常短的方法的逻辑。
在我看来,以下内容更清楚:
public String getSbValue() {
StringBuffer prev_sb = sb;
sb = new StringBuffer();
return prev_sb.toString();
}
(你的第二个例子,虽然与我上面的代码类似,但与你的第一个例子有不同的语义。)
P.S。您几乎肯定会使用StringBuilder
代替StringBuffer
。
答案 1 :(得分:1)
我认为某些程序员的选项1看起来像个谜题。选项2更短更清晰