- 接口要规避用户可能犯下的错误。
例如实现一个用来表现日期的class设计构造函数
class Date{
public:
Date(int month,int day,int year);
}
但是这样如果用户误输入一些日期信息或者将信息顺序填错将会发生错误。
这样我们可以导入简单的外覆环境来区别天数,月份和年份,然后于Date构造函数中使用这些类型:
struct Day {
explicit Day(int d)
:val(d) {}
int val;
};
Month和Year也可以这样定义,规避一些错误。
限制类型之后,还要限制值。例如
class Month{
public:
static Month Jan() {return Month(1);}
static Month Feb() {return Month(2);}
…
static Month Dec() {return Month(12);}
…
private
explicit Month(int m);
…
}
Date d(Month::Mar(),Day(30),Year(1995));
好的接口很容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质。
促成正确使用的办法包括接口的一致性,以及内置类型的行为兼容。
阻止误用的办法包括建立新类型,限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。
让接口容易被正确实用,不易被误会
最新推荐文章于 2024-12-01 23:54:11 发布