使用较差的变量范围重构遗留的Java代码

时间:2014-06-25 16:03:23

标签: java scope refactoring

我必须处理一些旧的遗留代码,不幸的是,它具有在方法开头声明所有变量的编码风格。

代码看起来像这样:

public String doSomething(boolean showStars) {
    StringBuilder builder = null;
    String result = "";
    String prefix = null;
    int i;

    try {
        prefix = "result: ";
        if (showStars) {
            builder = new StringBuilder();
            builder.append(prefix);
            for (i = 0; i < 10 ; i++) {
                builder.append('*');
            }
            result += builder.toString();
        } else {
            builder = new StringBuilder();
            builder.append(prefix);
            for (i = 0; i < 20; i++) {
                builder.append('.');
            }
            result += builder.toString();
        }

    } catch (SomeException ignored) {
    }
    return result;
}

关于如何将代码最容易(自动)转换为类似的内容,是否有最佳实践?

public String doSomething(boolean showStars) {
    String result = "";

    try {
        String prefix = "result: ";
        if (showStars) {
            StringBuilder builder = new StringBuilder();
            builder.append(prefix);
            for (int i = 0; i < 10 ; i++) {
                builder.append('*');
            }
            result += builder.toString();
        } else {
            StringBuilder builder = new StringBuilder();
            builder.append(prefix);
            for (int i = 0; i < 20; i++) {
                builder.append('.');
            }
            result += builder.toString();
        }

    } catch (SomeException ignored) {
    }
    return result;
}

1 个答案:

答案 0 :(得分:2)

对于所有这些问题,请确保您有相应的单元测试覆盖率。可以通过所谓的琐碎的重构来引入严重的错误!

至于执行重构的最佳实践,我相信一个不错的IDE可以帮助你。如果删除原始声明,IDE将突出显示未声明的变量,并能够提示并插入合适的声明。只需仔细检查这些插入(最好通过上面的单元测试)