请教一下各位大佬:写模版类的特例化时,如果只有大概 10%的差异,如何优雅的处理对其余 90%的代码的“复制”?

2018-11-15 11:33:56 +08:00
 wutiantong
2295 次点击
所在节点    C
6 条回复
RaynorGu
2018-11-15 11:41:09 +08:00
组合与集成,抽公共函数
wutiantong
2018-11-15 11:52:58 +08:00
@RaynorGu 继承还得找个合适的类名,想名字这种事情真的很烦呀…
codehz
2018-11-15 17:53:35 +08:00
把公共部分加个 Internal 写在 protected 里面,然后把模板函数直接写,然后调用 Internal 函数。。。
如果要特化,就把特化需要的代码单独写到一个类里面,然后在原来的类的模板函数里调用特化类的函数,再传递到 Internal 函数里(
至少 Minecraft 基岩版就是这么做的,算是一个实际使用的例子。。
yutian2211
2018-11-15 20:46:42 +08:00
@codehz 有 link 么
iceheart
2018-11-23 07:42:26 +08:00
那%10 可以用 lambda 写
wutiantong
2018-11-23 11:54:32 +08:00
@codehz 我的实际场景没有那么复杂。。。只是个很单纯的类。。。
@RaynorGu 我前两天试着用继承来做,结果其实并没有简化多少,因为在子类中还得加很多 using 重新声明。。。

我目前的做法是把那个类又进一步拆开成两个了,也就是说,把产生差异的那部分单独组成了一个类,然后这两个类如同双子一般支持相互 conversion。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/508069

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX