最近想把重构领域的三本经典书籍(重构-Martin Fowler、重构与模式-Joshua Kerievsky 、修改代码的艺术-Michael C. Feathers)做一次重读,在温故知新的基础上每周与团队伙伴们一起分享讨论。
备注:博文上的相关代码均引用上述三本书籍,版权归三位大师所有。
什么是重构(Refactoring)?
所谓重构是这样一个过程:【在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构】。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法,可以将整理过程中不小心引入错误的机率降到最低。本质上说,重构就是在代码写好之后改进它的设计。
重构,第一个案例
案例是一个影片出租店用的程序,计算每一位顾客的消费金额并打印报表。操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租赁时间和影片类型算出费用。影片分为三类:普通片、儿童片和新片。除了计算费用,还要为常客计算点数;点数会随着租片种类是否为新片而有不同。
下图为程序的类图:
Movie(影片)
Movie是一个简单的data class。
public class Movie {
public static final int CHILDRENS = 2;
public static final int REGULAR = 0;
public static final int NEW_RELEASE = 1;
private String _title;