如果代码如此简单,那这个类没有必要。
如果Put()函数里有大量内容,那有必要。
你说的命名空间是最差的解决方案,因为会导致ADL
如果有人在另一个命名空间中写了另一个相同签名的Put函数,那代码有可能会突然改变行为。
【 在 bihai (new half life) 的大作中提到: 】
: 标 题: 这个类有必要吗?
: 发信站: 水木社区 (Fri Sep 3 14:13:26 2021), 站内
:
: 审查代码,看到一个类
: 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 于 Sep 3 14:16:03 2021 修改本文·[FROM: 98.42.143.*]
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 98.42.143.*]
--
修改:bihai FROM 98.42.143.*
FROM 76.126.252.*