C++技巧“概念的完整性”角度对复杂类进行分拆
《人月神化》一书首次提出了“观念整体性”这一重要概念。下面的例子使用这个原则来拆分一个复杂的类。以下是CSample的头文件:
类csample
{
...
private:
int a;
int b;
int c;//C必须保证始终等于a+b
int d;
int e;
int f;//F = D * E必须始终得到保证
...
};
显然,这个类承担了两个规则的保证。此外,这两个规则之间没有关系。因此,我们可以将其重构为以下代码的形式。
class c sample _ 1
{
...
private:
int a;
int b;
int c;//必须始终保证C等于a+b
};
class c sample _ 2
{
...
private:
int d;
int e;
int f;//f = d*f
}任何时候都必须保证;
class c sample
{
...
private:
c sample _ 1m _ 1;
c sample _ 2m _ 2;
};
显然,重构后的CSample代码要少得多。更容易保持内部规则的一致性。因为它将一些规则委托给其他类来确保。综上所述,“契约式设计”理论中的不变量是指一个类在任何操作完成后都有一些不可改变的规则。这些规则的维护是类的主要职责,所有这些不可改变的规则构成了这个类的概念完整性。
0条评论