0

开始; 仅仅因为一个人可以做到并不总是意味着一个人应该这样做。我将使用代码片段来解释我的问题:

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;
}

最好的祝福,

安德烈

4

2 回答 2

2

这显然是高度主观的。finally我个人发现很难遵循非常简短的方法的逻辑。

在我看来,以下内容更清楚:

public String getSbValue() {
    StringBuffer prev_sb = sb;
    sb = new StringBuffer();
    return prev_sb.toString();
}

(您的第二个示例虽然与我上面的代码相似,但与您的第一个示例不同,并且语义不同。)

PS您几乎肯定应该使用StringBuilder.StringBuffer

于 2013-10-29T06:43:10.050 回答
1

我认为某些程序员的选项 1 看起来像一个谜。选项2更短更清晰

于 2013-10-29T06:54:24.783 回答