当前在线人数7369
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
这种情况如何避免重复?
[版面:葵花宝典][首篇作者:bihai] , 2021年09月12日14:33:46 ,665次阅读,9次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
bihai
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: bihai (学得不好), 信区: Programming
标  题: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Sun Sep 12 14:33:46 2021, 美东)

审阅年轻人的代码,如下

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


struct AllSink {
  std::unique_ptr<Sink> system;
  std::unique_ptr<Sink> swap;
  std::unique_ptr<Sink> hidden;
};

AllSink all;

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

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

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

...
}

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

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:647:4d00:a]

 
Caravel
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: Caravel (克拉维尔), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Sun Sep 12 17:25:44 2021, 美东)

如果你的系统真的需要这么多sink,那也没有办法。不过可以把main init一部分写到
configuration file里面。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
jmrf
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: jmrf (daimao), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Sun Sep 12 18:01:12 2021, 美东)

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

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




--
※ 修改:·jmrf 於 Sep 12 18:11:56 2021 修改本文·[FROM: 2601:4c0:4001:64]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:4c0:4001:6]

 
helpme
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: helpme (名虚胖字满肥), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Sun Sep 12 22:09:29 2021, 美东)

enum {
  SINK_IDX_SYSTEM = 0,
  SINK_IDX_SWAP,
  ...
  SINK_IDX_INVALID
};

std::vector<std::unique_ptr<Sink>> allSinks(SINK_IDX_INVALID, nullptr);

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



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 71.]

 
Wagyu
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: Wagyu (瓦古), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Sun Sep 12 23:58:38 2021, 美东)

楼上那样,把sink type做一个enum
然后all sink里面用std::map
注意enum class不能用来做map的key

--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 173.]

 
bihai
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: bihai (学得不好), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Mon Sep 13 00:41:47 2021, 美东)

没看懂。

【 在 Wagyu (瓦古) 的大作中提到: 】
: 楼上那样,把sink type做一个enum
: 然后all sink里面用std::map
: 注意enum class不能用来做map的key



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:647:4d00:a]

 
Wagyu
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: Wagyu (瓦古), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Mon Sep 13 07:52:23 2021, 美东)

AllSink里面的container用std::map<SINK_TYPE, std::share_ptr<Sink>>

SINK_TYPE是一个简单的enum, 不要用enum class

AllSink里面还可以放一些set, get, valid, size函数

【 在 bihai (学得不好) 的大作中提到: 】
: 没看懂。




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 173.]

 
wdong
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: wdong (万事休), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Mon Sep 13 16:47:26 2021, 美东)

是很土。你这个程序里明显能看出有大量的重复代码。
但凡明显肉眼看着有重复的,一般都能通过更好的设计
把重复去掉。

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


--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 68.]

 
netghost
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: netghost (Up to Isomorphism), 信区: Programming
标  题: Re: 这种情况如何避免重复?
发信站: BBS 未名空间站 (Tue Sep 14 18:00:22 2021, 美东)

這東西用C macro很簡單。

但是大部分公司裏面把代碼量減少對自己有百害而無一利,所以現在都沒人care了

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


--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 71.]

[分页:1 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996