b***i 发帖数: 3043 | 1 审阅年轻人的代码,如下
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*****l 发帖数: 1 | 2 如果你的系统真的需要这么多sink,那也没有办法。不过可以把main init一部分写到
configuration file里面。 |
j**f 发帖数: 28 | 3 struct AllSink 里的不同名称,system,swap,hidden我们器人不需要识别,统一定义成
一个数组就好了.
后面main里就可以写循环了;
老器人可以不管你前面的定义,直接写循环,不就是指针加一吗?
BTW: 我真的不懂C++.
【在 b***i 的大作中提到】 : 审阅年轻人的代码,如下 : 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;
|
h****e 发帖数: 2125 | 4 enum {
SINK_IDX_SYSTEM = 0,
SINK_IDX_SWAP,
...
SINK_IDX_INVALID
};
std::vector> allSinks(SINK_IDX_INVALID, nullptr);
【在 b***i 的大作中提到】 : 审阅年轻人的代码,如下 : 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;
|
W***u 发帖数: 1 | 5 楼上那样,把sink type做一个enum
然后all sink里面用std::map
注意enum class不能用来做map的key |
b***i 发帖数: 3043 | 6 没看懂。
【在 W***u 的大作中提到】 : 楼上那样,把sink type做一个enum : 然后all sink里面用std::map : 注意enum class不能用来做map的key
|
W***u 发帖数: 1 | 7 AllSink里面的container用std::map>
SINK_TYPE是一个简单的enum, 不要用enum class
AllSink里面还可以放一些set, get, valid, size函数
【在 b***i 的大作中提到】 : 没看懂。
|
w***g 发帖数: 5958 | 8 是很土。你这个程序里明显能看出有大量的重复代码。
但凡明显肉眼看着有重复的,一般都能通过更好的设计
把重复去掉。
【在 b***i 的大作中提到】 : 审阅年轻人的代码,如下 : 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;
|
n******t 发帖数: 4406 | 9 這東西用C macro很簡單。
但是大部分公司裏面把代碼量減少對自己有百害而無一利,所以現在都沒人care了
。
【在 b***i 的大作中提到】 : 审阅年轻人的代码,如下 : 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;
|