《重构:改善既有代码的设计》读书笔记(二)
1、提取方法的概念
提取方法(Extract Method)是一种常见的代码重构技巧,它涉及到将一个长方法中的一部分代码分离出来,形成一个新的方法。这样做的目的是为了提高代码的可读性和可维护性,同时也便于代码的复用。通过提取方法,可以将复杂的逻辑封装在单独的方法中,使得主方法更加简洁明了,易于理解和管理。
提取方法的代码案例
以下是一个简单的代码重构案例,展示了如何从一个长方法中提取出一个新的方法:
原始代码
public class Employee {
private String name;
private int age;
private double salary;
public Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
// 长方法
public void printEmployeeInfo() {
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("薪水:" + salary);
}
}
在上面的例子中,printEmployeeInfo
方法包含了三个打印语句,这些语句可以分别封装成三个方法,如下所示:
重构后的代码
public class Employee {
private String name;
private int age;
private double salary;
public Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
// 提取方法1
private void printName() {
System.out.println("姓名:" + name);
}
// 提取方法2
private void printAge() {
System.out.println("年龄:" + age);
}
// 提取方法3
private void printSalary() {
System.out.println("薪水:" + salary);
}
// 使用提取的方法替换原来的长方法
public void printEmployeeInfo() {
printName();
printAge();
printSalary();
}
}
通过提取方法,我们将 printEmployeeInfo
方法拆分成了三个更小的方法,每个方法只负责打印一个属性。这样,代码更加清晰、易于理解和维护。
提取方法的好处
- 提高代码可读性:通过提取方法,可以将复杂的逻辑封装在单独的方法中,使得主方法更加简洁明了,易于理解和管理。
- 促进代码复用:提取出的方法可以在不同的地方被多次调用,从而避免了代码的重复。
- 降低维护成本:当需要修改某个功能时,只需修改对应的方法,而不必遍历整个代码库寻找相关的代码段。
二、常见的代码重构技巧
代码重构是软件开发过程中的一个重要环节,它有助于改善代码的质量、可读性、可维护性和性能。以下是一些常见的代码重构技巧:
- 提炼方法(Extract Method):将一段代码逻辑提取为一个独立的方法,以提高代码的可读性和重用性。
- 重命名变量和方法(Rename):给变量、方法、类等命名一个更具描述性和准确性的名称,以提高代码的可读性和理解性。
- 消除长方法(Eliminate Long Method):尽量将长方法拆分成多个短方法,每个方法只完成一个特定的功能。
- 去掉全局变量(Remove Global Variables):使用参数传递或返回值来替代全局变量,降低代码的耦合度。
- 使用设计模式(Use Design Patterns):将常见的代码结构抽象成设计模式,以提高代码的可扩展性和可维护性。
- 去掉无用代码(Remove Dead Code):删除未使用的变量、方法和类等,减少代码的冗余。
- 简化条件语句(Simplify Conditionals):使用更简洁的条件语句来替代复杂的嵌套条件语句,提高代码的可读性。
- 封装字段(Encapsulate Field):将类的字段封装成私有属性,并提供公共的getter和setter方法,以保护字段的安全性和一致性。
- 消除重复代码(Remove Duplication):提取重复的代码到一个公共的方法或类中,避免代码重复。
- 重构数据库访问(Refactor Database Access):将直接操作数据库的代码封装到Repository或DAO中,实现数据访问逻辑与业务逻辑的分离。
以上就是关于提取方法的概念、代码案例以及好处的解释。希望这些信息能够帮助您更好地理解和应用这一重构技巧。