【发布时间】:2011-07-16 15:21:25
【问题描述】:
我正在编写一个用于娱乐和教育的容器类。以前在编写容器类时,我只使用了一些非常基本的方法:GetValue、SetValue、GetSize 和 Resize。我这样做是为了避免“代码意大利面条”,这样我的课程会更容易调试。
但是,我想到该类的用户可能想要做的不仅仅是简单的替换。于是我又加了几个方法:
void Replace(const std::size_t Start, const std::size_t End, const T Value);
void Replace(const std::size_t Start, const std::size_t End, const MyClass Other);
void Insert(const std::size_t Index, const T Value);
void Insert(const std::size_t Index, const MyClass Other);
void Delete(const std::size_t Index);
void Delete(const std::size_t Start, const std::size_t End);
一般来说,类应该只提供最基本的接口,让类的用户自己编写函数来做复杂的事情吗?还是应该以可维护性为代价内置复杂的东西?
【问题讨论】:
-
首先,您是否需要这些功能?其次,如果您遵循标准库模式,您的生活会更轻松。
-
@Chris 我的目的是教育和娱乐,所以可能是也可能不是。
-
两种不同的插入和替换方法有何不同? T vs MyClass。
-
@mlaw
Insert将其他元素推开,为新元素腾出空间。Replace只是覆盖它们。容器类是模板化的,所以T代表类存储的内容,MyClass代表类本身。 -
啊。知道了。所以 Insert(Index, MyClass Other) 就像一个“addAll”操作。