最后使用的最佳做法? (不是为了释放资源)

时间:2013-10-29 06:39:35

标签: java finally

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

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

致以最诚挚的问候,

安德烈

2 个答案:

答案 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更短更清晰