重构改善既有代码之令人迷惑的暂时字段
Temporary Field(令人迷惑的暂时字段)
有时你会看到这样的对象:其内某个实例变量仅为某种特定情况而设。这样的代码让人不易理解,因为你通常认为对象在所有时候都需要它的所有变量。
令人迷惑的暂时字段弊端
1.后期难以维护,会令程序员不理解是否需要使用所有的字段。
2.阅读性差,因为字段的暂时性,很难记住其作用或猜测其目的性,特别是在命名不规范的时候。
优化方式
关于优化的常用方式在另外一篇文章总结
1.运用 Extract Class – Replace Method with Method Object 让这些临时字段封装到一个类中杜绝暂时字段。
2.还可以使用Introduce Null Object在“变量不合法”的情况下创建一个Null对象。
示例
public class TemporaryFieldExample1 {
private final int base;
private Integer month;
private double sum;
private int sumDiem;
public TemporaryFieldExample1(int base) {
this.base = base;
}
public double estimateReward(Integer month) {
if (month