wutiantong
V2EX  ›  C

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

  •  
  •   wutiantong · Nov 15, 2018 · 2947 views
    This topic created in 2761 days ago, the information mentioned may be changed or developed.
    6 replies    2018-11-23 11:54:32 +08:00
    RaynorGu
        1
    RaynorGu  
       Nov 15, 2018
    组合与集成,抽公共函数
    wutiantong
        2
    wutiantong  
    OP
       Nov 15, 2018 via iPhone
    @RaynorGu 继承还得找个合适的类名,想名字这种事情真的很烦呀…
    codehz
        3
    codehz  
       Nov 15, 2018   ❤️ 1
    把公共部分加个 Internal 写在 protected 里面,然后把模板函数直接写,然后调用 Internal 函数。。。
    如果要特化,就把特化需要的代码单独写到一个类里面,然后在原来的类的模板函数里调用特化类的函数,再传递到 Internal 函数里(
    至少 Minecraft 基岩版就是这么做的,算是一个实际使用的例子。。
    yutian2211
        4
    yutian2211  
       Nov 15, 2018 via Android
    @codehz 有 link 么
    iceheart
        5
    iceheart  
       Nov 23, 2018 via Android
    那%10 可以用 lambda 写
    wutiantong
        6
    wutiantong  
    OP
       Nov 23, 2018
    @codehz 我的实际场景没有那么复杂。。。只是个很单纯的类。。。
    @RaynorGu 我前两天试着用继承来做,结果其实并没有简化多少,因为在子类中还得加很多 using 重新声明。。。

    我目前的做法是把那个类又进一步拆开成两个了,也就是说,把产生差异的那部分单独组成了一个类,然后这两个类如同双子一般支持相互 conversion。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2901 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 06:08 · PVG 14:08 · LAX 23:08 · JFK 02:08
    ♥ Do have faith in what you're doing.