对方法的调用排序:从 1 个控制器还是递归?

Sequencing calls to methods: From 1 controller or recursive?

以下每种模式的优缺点是什么,展示了非常常见的情况,例如程序开头的初始化过程:

递归调用:

void foo1() {
    //do some work
    foo2();
}

void foo2() {
    //do some work
    foo3();
}

void foo3() {
    //do some work
    //end
}

或来自1个主控制器:

void main() {
    foo1();
    foo2();
    foo3();
}

首先,我想说 递归 一词并不合适,因为在您的示例中没有方法直接或间接调用自身。

关于你的问题本身,恕我直言,这两种方法都是有效的,但意图不同:

  • 第一个意味着调用 foo1 进行初始化将意味着调用 foo2 而调用者可能不知道这一点。如果你想确保这一点,你可以使用这种方式。
  • 第二个意味着有(通常)独立的步骤。交换、添加或删除其中之一更容易。如果你的方法是截然不同的并且是完全独立的步骤,那么这是最准确的。

请注意,您当然可以将两者混合使用。

没有上下文很难回答,但无论如何我都会:)

标记为 递归 的是当开发人员不希望他的函数变得太长时,通过将部分函数移动到新函数而看到的。这通常是未能将功能划分为良好的单元,每个单元都履行单一职责。

第二个例子(1主控)就好多了。开发人员认识到需要完成的工作应该拆分为三个功能,而最上面的功能明确委托了需要执行的三个步骤。这里的可读性要好得多。