- 主题:这个类有必要吗?
审查代码,看到一个类
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.*
这个不影响性能,也不影响代码的清晰。我觉得你就不要管他怎么写了。。。
写代码不能有洁癖。
【 在 bihai 的大作中提到: 】
: 审查代码,看到一个类
: class Sink {
: private:
: ...................
--
FROM 114.100.88.*
有道理,我是有洁癖
不过对方也有洁癖。我写了一个简单的类,他非让我改成非常通用的更多功能的类。比如我的名字是FileReader,他让我改成Resource Reader。后来我也没改
【 在 dormouseBHU @ [CPlusPlus] 的大作中提到: 】
:
: 这个不影响性能,也不影响代码的清晰。我觉得你就不要管他怎么写了。。。
: 写代码不能有洁癖。
:
: 【 在 bihai 的大作中提到: 】
#发自zSMTH@HD1925
--
FROM 98.42.143.*
你俩为啥要在这些无关紧要的地方较真呢…
这个明显是需要扩展功能的时候再重构也来得及的…
【 在 bihai 的大作中提到: 】
: 有道理,我是有洁癖
: 不过对方也有洁癖。我写了一个简单的类,他非让我改成非常通用的更多功能的类。比如我的名字是FileReader,他让我改成Resource Reader。后来我也没改
:
: ...................
--
FROM 223.104.34.*
1 sink提供了新的含义吗,能映射到一个业务对象吗?
2 或者起码其名字本身提供了关键de解释、注释功能?
3 还是只是语言层面的功能?内存管理方面的功能?
如果1,私有继承都合理。如果2,3,可做可不做。
如果只是因为设计惯性,put接口不会扩展为一组,
那你的理解正确,命名空间合理,或者类里纯静态接口。
持有变量没必要。c#为这种场景,还提供了扩展方法这样的语法。
【 在 bihai 的大作中提到: 】
: 审查代码,看到一个类
: class Sink {
: private:
: ...................
--
FROM 113.137.160.*
没有新的含义。他的借口是,这样包装一下万一以后原来的类AnInterface有什么变化(能有什么变化?难道是名字变了?),他可以只改动Sink,而不改动需要使用Sink。
他之前说,使用者类,比如Caller,可以不需要知道AnInterface类。问题它得知道Sink类啊,这有区别吗?
【 在 DoorWay 的大作中提到: 】
: 1 sink提供了新的含义吗,能映射到一个业务对象吗?
: 2 或者起码其名字本身提供了关键de解释、注释功能?
: 3 还是只是语言层面的功能?内存管理方面的功能?
: ...................
--
FROM 98.42.143.*
Sink什么意思,AnInterface里有Sink吗
【 在 bihai 的大作中提到: 】
: 没有新的含义。他的借口是,这样包装一下万一以后原来的类AnInterface有什么变化(能有什么变化?难道是名字变了?),他可以只改动Sink,而不改动需要使用Sink。
: 他之前说,使用者类,比如Caller,可以不需要知道AnInterface类。问题它得知道Sink类啊,这有区别吗?
:
--
FROM 1.85.204.*
Sink下水道的意思,就是写入的地方。Sink啥没有,就调用AnInterface的Put。我就是觉得不需要这个类来通过拥有一个私有AAInterface间接使用Put,而是需要使用Sink的类直接使用AnInterface。就是觉得这个人总是多此一举,画蛇添足,简单的事情复杂化
【 在 DoorWay 的大作中提到: 】
: Sink什么意思,AnInterface里有Sink吗
: :
--
FROM 98.42.143.*
事出反常必有妖。你说的都对,一个人不能傻到这种地步。
他要是你碰到的第一个这么胡乱设计的人,他是傻瓜。
如果你碰到的每一个都人都胡乱设计,那可能是有你没考虑到的地方。更可能你是个天才。
【 在 bihai 的大作中提到: 】
: Sink下水道的意思,就是写入的地方。Sink啥没有,就调用AnInterface的Put。我就是觉得不需要这个类来通过拥有一个私有AAInterface间接使用Put,而是需要使用Sink的类直接使用AnInterface。就是觉得这个人总是多此一举,画蛇添足,简单的事情复杂化
:
--
FROM 1.85.204.*
你代码里有个小虫子。
【 在 bihai 的大作中提到: 】
: 审查代码,看到一个类
: class Sink {
: private:
: ...................
--
FROM 221.218.175.*