条款-19 设计 class 犹如设计 type
Remember:
1- class 的设计就是 type 的设计。
在定义一个新 type 之前,请确定你已经考虑过本条款覆盖的所有讨论主题。
几乎每一个 class 都要求你面对以下提问:
- 新 type 的对象应该如何被创建和销毁?
- 对象的初始化和对象的赋值该有什么样的差别?
- 新 type 的对象如果被 passed by value(以值传递),意味着什么?
- 什么是新 type 的“合法值” ?
- 你的新 type 需要配合某个继承图系( inheritance graph)吗?
- 你的新 type 需要什么样的转换?
- 什么样的操作符和函数对此新 type 而言是合理的?
- 什么样的标准函数应该驳回?
- 谁该取用新 type 的成员?
- 什么是新 type 的“未声明接口” (undeclared interface)?
- 你的新 type 有多么一般化?
- 你真的需要一个新 type 吗?