由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 这种情况如何避免重复?
进入Programming版参与讨论
1 (共1页)
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;

1 (共1页)
进入Programming版参与讨论