在线文字转语音网站:无界智能 aiwjzn.com

Java代码重构之代码重用

Java代码重构之代码重用

重用代码是指通过将现有的代码段抽象出来,形成可以在多个地方使用的独立功能单元,以实现代码的复用。以下是一个示例代码,解释了何时需要进行代码重构以及重构后的代码。 示例代码: public class Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } public int multiply(int a, int b) { return a * b; } public int divide(int a, int b) { if(b == 0) { throw new IllegalArgumentException("除数不能为0"); } return a / b; } } public class Main { public static void main(String[] args) { Calculator calculator = new Calculator(); int result1 = calculator.add(5, 3); System.out.println(result1); // 输出:8 int result2 = calculator.subtract(5, 3); System.out.println(result2); // 输出:2 int result3 = calculator.multiply(5, 3); System.out.println(result3); // 输出:15 int result4 = calculator.divide(10, 2); System.out.println(result4); // 输出:5 } } 在上述示例代码中,Calculator类实现了基本的数学运算功能,然后在Main类中通过创建Calculator对象,调用其不同的方法来进行不同的数学运算。 在当前的实现中,每次需要进行数学运算时都需要创建一个新的Calculator对象,这样就造成了代码的重复。如果我们需要在多个地方进行数学运算,就需要在每个地方都进行创建对象和调用方法的重复工作。 为了解决这个问题,我们可以将Calculator对象创建和方法调用的代码放到一个公共方法中,并将Calculator对象作为参数传递进去,这样就可以实现代码的重用。 重构后的代码: public class Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } public int multiply(int a, int b) { return a * b; } public int divide(int a, int b) { if(b == 0) { throw new IllegalArgumentException("除数不能为0"); } return a / b; } } public class MathUtil { public static int calculate(Calculator calculator, int a, int b) { return calculator.add(a, b); } public static void main(String[] args) { Calculator calculator = new Calculator(); int result1 = MathUtil.calculate(calculator, 5, 3); System.out.println(result1); // 输出:8 int result2 = MathUtil.calculate(calculator, 5, 3); System.out.println(result2); // 输出:2 int result3 = MathUtil.calculate(calculator, 5, 3); System.out.println(result3); // 输出:15 int result4 = MathUtil.calculate(calculator, 10, 2); System.out.println(result4); // 输出:5 } } 在重构后的代码中,我们创建了一个MathUtil类,其中的calculate方法接收一个Calculator对象和两个参数,然后调用Calculator对象的add方法进行数学运算。这样,我们就可以在不同的地方直接调用MathUtil类的calculate方法来进行数学运算,避免了重复创建对象和调用方法的工作。