重构代码

时间:2016-01-11 14:22:33

标签: java refactoring

我正在学习gradle工具api。 我需要写两种方法。一个将调用build.gradle文件中定义的所有任务(定义了10个以上的任务)和另一个我可以指定任务名称的任务。(如清理,构建等)

我有两种方法,只有一行代码不同。 我需要你的建议,我们如何重构这些方法,避免代码重复。

第一种方法。将执行build.gradle

中的所有任务
public boolean buildProject() {
        ProjectConnection connection = connector.connect();
        BuildLauncher build = connection.newBuild();
        try {
            build.run();// by default it executes all tasks
        }finally {
            connection.close();
        }
        return true;
    }

第二种方法只会执行指定的任务

public boolean buildSpecificTask(String ...tasks ) {
    ProjectConnection connection = connector.connect();
    BuildLauncher build = connection.newBuild();
    build.forTasks(tasks);

    try {
        build.run();
    }finally {
        connection.close();
    }
    return true;
}

只有build.forTasks(tasks);

的行差异

2 个答案:

答案 0 :(得分:4)

public boolean build(String ...tasks) {
    ProjectConnection connection = connector.connect();
    BuildLauncher build = connection.newBuild();
    if (tasks.length > 0) {
        build.forTasks(tasks);
    }

    try {
        build.run();
    }finally {
        connection.close();
    }
    return true;
}

答案 1 :(得分:3)

如果build.forTasks()被设计为在传递空数组时不执行任何操作,那么您不需要两种方法。第二种方法中的参数列表显示String... tasks,表示零个或多个String参数。当参数的数量为零时,则任务等于空数组。

如果build.forTasks使用空数组执行某些操作,请查看是否可以对该情况执行任何操作;那么你只需要一个buildProject方法。