重构代码
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方法。
我正在学习 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方法。