代码之家  ›  专栏  ›  技术社区  ›  flowit

重构深层函数调用

  •  0
  • flowit  · 技术社区  · 8 年前

    我致力于数据处理,它可以处理分层数据。

    与我目前的工作最好的类比是网络处理。数据包是分层的,每一层都由一个特定的函数单独处理。调用更深层的下一个函数是在当前层中计算的。在某些情况下,调用堆栈显示递归behviour的方式可能会使以前调用的函数再次被调用(例如a()->B()->C()->B()->D()…)

    void func_N(void)
    {
        // get next layer info
        switch (next) {
        case A:
            func_A();
            break;
        case B:
            func_B();
            break;
        default:
            finalize()
        }
    }
    

    我可以保证调用链不会变得任意长。技术上是有限制的,尽管很高。调用堆栈的深度取决于我们可以对其进行一些假设的数据。我需要一些新的统计数据,但最多10个电话的深度是一个很好的估计。

    我希望你明白我的意思。工作正常,但通过调用堆栈的潜在轨迹越复杂,维护起来就越困难。

    然而,可维护性并不是我最关心的问题。在这种情况下,性能很重要。有没有其他更快更适合这个问题的编程技术?

    0 回复  |  直到 8 年前