3

在设计 C++ 类时,假设我有以下两个选项:

选项 1:一种具有长参数列表的方法,该方法执行多项任务。
选项 2:每个任务的单独方法(每个方法都有更小的参数列表)。

显然,一般来说,选项 2 更可取,因为它产生更清晰的代码。但是,如果这些方法的唯一目的是成为其他方法的“助手”,那么在选项 2 的情况下,我将不得不承担多个函数调用的开销,而选项 1 将只有一个函数调用。

在这种(极端)情况下,假设的性能提升(由于更少的函数调用)是否证明选择选项 1 是合理的?

4

3 回答 3

4

在这种(极端)情况下,假设的性能提升(由于更少的函数调用)是否证明选择选项 1 是合理的?

IMO,这里的性能提升可以忽略不计,不会牺牲代码的可维护性,特别是在企业应用程序中,其中具有大参数列表和大量代码行的函数难以修改/调试。此类功能必须分解为多个较小的功能,其中每个功能都执行明确定义的步骤,该步骤是较大任务的一部分。

于 2012-10-21T03:22:00.407 回答
0

你的工作是编写好的、干净的和工作的代码。编译器的工作是使其高效。显然,它比你做的要好得多。

所以,是的,总是选择第二个选项。如果您想要效率,请编写干净并让编译器完成它的工作。(顺便说一句,您可以使用 -O3 标志进行编译以进一步增加优化)

于 2012-10-21T05:31:25.570 回答
0

给一个实体一个连贯的责任 是 Alexandrescu 在 C++ 编码标准中第 5 条的标题。

在我看来,您将失去清晰度,增加维护成本,并且更有可能在“全部完成”场景中引入错误。

衡量单独函数调用与必须在每次调用内部执行代码路径逻辑的函数的性能可能是明智的。

于 2012-10-21T22:35:07.000 回答