- 主题:这个类有必要吗?
审查代码,看到一个类
class Sink {
private:
std::unique_ptr<AnInterface> in_;
public:
explicit Sink(std::unique_ptr<AnInterface> in):in_(std::move(in)){}
bool Put(int size, void* data) {
in_->Write(size, data);
}
};
我说你直接写一个命名空间不行吗?
namespacde utils {
bool Put(AnInterface* in, int size, void* data) {
in_->Write(size, data);
}
}
然后讨论了半天。我觉得这个类里面这个私有变量完全没有必要。对方提出的第一个理由是,我写了一个超姐简单的类。可是我的类至少构造函数利用传进来的参数调用了函数才赋值给私有变量,不是直接传进来的。另一个我的类里面有一个私有变量也是中间产物,所以后面函数多次调用要用的。这样的中间产物没有必要暴露,所以用一个类封装起来。对方另外一个理由是,封装后如果上游代码改了形式,他不用改主要的程序,只改这个类就行了。可是我觉得他只改那个函数就行了。
--
修改:bihai FROM 98.42.143.*
FROM 98.42.143.*
有道理,我是有洁癖
不过对方也有洁癖。我写了一个简单的类,他非让我改成非常通用的更多功能的类。比如我的名字是FileReader,他让我改成Resource Reader。后来我也没改
【 在 dormouseBHU @ [CPlusPlus] 的大作中提到: 】
:
: 这个不影响性能,也不影响代码的清晰。我觉得你就不要管他怎么写了。。。
: 写代码不能有洁癖。
:
: 【 在 bihai 的大作中提到: 】
#发自zSMTH@HD1925
--
FROM 98.42.143.*
没有新的含义。他的借口是,这样包装一下万一以后原来的类AnInterface有什么变化(能有什么变化?难道是名字变了?),他可以只改动Sink,而不改动需要使用Sink。
他之前说,使用者类,比如Caller,可以不需要知道AnInterface类。问题它得知道Sink类啊,这有区别吗?
【 在 DoorWay 的大作中提到: 】
: 1 sink提供了新的含义吗,能映射到一个业务对象吗?
: 2 或者起码其名字本身提供了关键de解释、注释功能?
: 3 还是只是语言层面的功能?内存管理方面的功能?
: ...................
--
FROM 98.42.143.*
Sink下水道的意思,就是写入的地方。Sink啥没有,就调用AnInterface的Put。我就是觉得不需要这个类来通过拥有一个私有AAInterface间接使用Put,而是需要使用Sink的类直接使用AnInterface。就是觉得这个人总是多此一举,画蛇添足,简单的事情复杂化
【 在 DoorWay 的大作中提到: 】
: Sink什么意思,AnInterface里有Sink吗
: :
--
FROM 98.42.143.*
AnInterface是GPT所描述的分区的一个接口类,没有成员变量,有函数可以取得该分区的信息。当然,实际上我们传入的是子类的指针。我就是想,在接口类这个外面裹一个Sink类有没有必要
实际上,对每个AnInterface,我认为就只需要调用一次。因为对分区的写入和读出基本制作一次,程序就应该退出并重启了。没有人会多次写入一个分区不同的数据吧?
【 在 lhyang 的大作中提到: 】
: 就看这个put的调用次数了,1-2处你对,简单明了
: 多处调用,他对,构造一个类,以后好扩展
--
FROM 98.42.143.*