重构代码

3
我正在学习Gradle工具API。我需要编写两个方法。其中一个将调用build.gradle文件中定义的所有任务(有超过10个任务定义),另一个可以指定任务名称(例如:clean,build等)。
我有以下两种方法,它们只在一行代码上有所不同。我需要您的建议,以了解如何重构这些方法,以避免代码重复。
第一个方法。将执行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个回答

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

3
如果 build.forTasks() 在传入一个空数组时设计为不执行任何操作,则您不需要两个方法。您第二个方法中的参数列表说String... tasks,这意味着零个或多个字符串参数。当参数数量为零时,tasks 等于空数组。
如果 build.forTasks() 对空数组执行某些操作,请尝试使其在该情况下不执行任何操作;然后您只需要一个 buildProject 方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接