- 过多的变化
我们总是希望自己写的软件是“高内聚、低耦合”的,所谓耦合指的是两个类或者多个类之间的关系,当一个类发生变化的,其他的类同时也会发生变化。而我们希望的是,类与类之间关系尽量避开这样变化。而是当其中一个类发生变化时,与其他的类不受影响。也就是说变化只发生在自己的内部,这就是高内聚。
以上是类与类之间的关系。那么一个类内部之间会不会也会有这样的变化呢?
也就是当我们给这个类添加一个新的功能或者添加一个新的变量的时候,往往会引起其他多个函数同时变化,如果修改的代码分散到各地,有时会很难找到他,也会很容易忘记修改某个重要的内容。我们希望的是:针对外界的变化所做的相应的修改,都只应该发生在单一类中,而这个类中的变化,都会反映到这个类所生成的所有的对象中。
此时我们就应该考虑要把这个类整理一下,是其一个类的变化,尽量由一处引起。或者把这个类分解成多个类。
- 过度依赖
C++面向对象技术一个重要的特点就是封装,也就是“把数据和对数据的行为包装在一起”。有时会出现这样的情况,A类中的某个函数,对B类的操作性更高,或者说和B类的关联更加紧密。一个经典的场景:为了计算某个值,我们会调用另外一个类中的好多函数。
遇到以上情况,我们可以尝试着将总是一起变化的东西放到一块。数据和操作这些数据的函数总是在一起。