让接口容易被正确使用,不易被误用

一个好的接口设计方式应该满足要求:“容易被正确使用,不易被误用”。所以设计主要分为两个方面,促进正确使用,阻止误用。

促进正确使用的方法主要有:

  1. 保持接口的一致性
  2. 与内置类型行为兼容

STL 勘称保持接口一致性的典范,这样降低了用户的记忆负担。而与内置行为兼容同时也保证不会出现违反用户直觉的问题。

阻止误用主要有:

  1. 建立新的类型
  2. 限制类型上的操作
  3. 束缚对象取值范围
  4. 消除客户对资源的管理

增加封装性

如果某些东西被封装,它就不再可见;越多的东西被封装,那么看到它的人也就越少。而看到它的人越少,我们就有越大的弹性去变化它。所以我们推崇封装:它使我们能够改变事物而只影响有限的客户。

类的设计中,坚持以下两条准则有利于促进封装性:

  1. 成员变量 private
  2. 使用 non-member 和 non-friend 替换 member 函数
  3. 避免返回指向对象内部成分的 handles

将成员变量声明为 private 可以赋予客户访问数据的一致性、可细微划分访问控制、允诺约束条件获得保证,并提供 class 作者以充分实现弹性。

而尽可能的 member 函数,则减少其暴露数据,也能提高其封装性。

避免返回内部分成引用,可以保证对象状态不会被外部破坏,自然也能提高封装性。