对方法的调用排序:从 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主控)就好多了。开发人员认识到需要完成的工作应该拆分为三个功能,而最上面的功能明确委托了需要执行的三个步骤。这里的可读性要好得多。
以下每种模式的优缺点是什么,展示了非常常见的情况,例如程序开头的初始化过程:
递归调用:
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主控)就好多了。开发人员认识到需要完成的工作应该拆分为三个功能,而最上面的功能明确委托了需要执行的三个步骤。这里的可读性要好得多。