10 章:
有两条加以修改的理由
每次修改Swing代码时,更新版本号无疑;但反过来未必可行,也就是还有其他理由会导致修改其跟踪的版本信息。
认识到并创建出更好的抽象,将三个处理版本信息的 SuperDashboard 方法拆解到名为 Version 的类中。
public class Version {
public int getMajorVersionNmber()
public int getMinorVersionNumber()
public int getBuildNumber();
}
分而治之,在程序中的重要程度。
如果一个类中的每个变量都被每个方法所使用,则具有最大的内聚性
意味着类中的方法和变量互相依赖,互相结合成一个逻辑整体
public class Stack {
private int topOfStack = 0;
List<integer> elements = new LInkedList<integer>();
public int size() {
return topOfStack;
}
pubic ovid push(int element) {
topOfStack++;
elements.add(element);
}
public int pop() throws PoppedWhenEmpty {
if (topOfStack == 0)
throw new PoppedWhenEmpty();
int element - elements.get(--topOfStack);
elements.remove(topOfStack);
return element;
}
}
操持函数和参数列表短小的策略【2】,有时会导致为一组子集方法所用的实体变量数据增加。出现这种情况时,往往意味着至少有一个类要从大类挣扎出来。你应当尝试将这些变量和方法抓到两个或多个类中,让新的类更为内聚。
较大的函数切割成小函数,上面结论:会导致更多的类出现。想要拆出来的使用了4个变量,都作为参数传递到新函数中去呢?
只要将4个变量提升为类的实体变量,无需传递就可以拆解代码。
然后读“可异这也意味着类丧失了内聚性,因为堆积了越来越多只为允许少量函数芍了而存在的实体变量”,这样一想,原来不是分出来一个类,所谓提升为类的实体变量,就是变为全局的变量。
有些函数想要共享某些变量,为什么不让它们拥有自己的类呢,录类丧失了内聚性,就拆分它。
所以,将函数拆为许多小函数,往往也是将类拆分为多个小类的时机。程序会更加有组织,也会拥有更为透明的结构。
为了说明,