重构代码

Refactoring the code

我正在学习 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);

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

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

如果build.forTasks对一个空数组做某事,看看你能不能让它在这种情况下什么也不做;那么你只需要一个buildProject方法。