这种情况如何避免重复?

b
bihai
楼主 (未名空间)

审阅年轻人的代码,如下

std::unique_ptr Init(const std::string& path) {
...// file open and construct
}

struct AllSink {
std::unique_ptr system;
std::unique_ptr swap;
std::unique_ptr hidden;
};

AllSink all;

int main() {
all.system=std::move(Init("blablabla/sd/001"));
if (!all.system) {
LOG< return -1;
}

all.swap=std::move(Init("blablabla/sd/002"));
if (!all.swap) {
LOG< return -1;
}

all.hidden=std::move(Init("blablabla/sd/003"));
if (!all.hidden) {
LOG< return -1;
}

...
}

虽说这个年轻人这次的代码就三个Sink,但其实这个项目是12个。我建议他把这12个都
写上。但是这样重复也太土了吧?

C
Caravel

如果你的系统真的需要这么多sink,那也没有办法。不过可以把main init一部分写到
configuration file里面。
j
jmrf

struct AllSink 里的不同名称,system,swap,hidden我们器人不需要识别,统一定义成
一个数组就好了.
后面main里就可以写循环了;
老器人可以不管你前面的定义,直接写循环,不就是指针加一吗?

BTW: 我真的不懂C++.
【 在 bihai (学得不好) 的大作中提到: 】
: 审阅年轻人的代码,如下
: std::unique_ptr Init(const std::string& path) {
: ...// file open and construct
: }
: struct AllSink {
: std::unique_ptr system;
: std::unique_ptr swap;
: std::unique_ptr hidden;
: };
: AllSink all;
: ...................