C++;设计:单功能执行多任务与多功能执行单任务 设计C++类时,假设我有以下两个选项:

C++;设计:单功能执行多任务与多功能执行单任务 设计C++类时,假设我有以下两个选项:,c++,methods,C++,Methods,选项1:一个具有长参数列表的方法,该方法执行多个任务。 选项2:每个任务都有单独的方法(每个方法都有较小的参数列表) 显然,在一般情况下,选项2更可取,因为它生成更清晰的代码。然而,如果这些方法的唯一目的是作为其他方法的“助手”,那么在选项2的情况下,我将不得不承担多个函数调用的开销,而选项1只有一个函数调用 在这种(极端)情况下,假定的性能增益(由于更少的函数调用)是否有理由选择选项1 在这种(极端)情况下,假定的性能增益(由于更少的函数调用)是否有理由选择选项1 在我看来,这里的性能增益可以

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

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

在这种(极端)情况下,假定的性能增益(由于更少的函数调用)是否有理由选择选项1

在这种(极端)情况下,假定的性能增益(由于更少的函数调用)是否有理由选择选项1


在我看来,这里的性能增益可以忽略不计,不至于牺牲代码的可维护性,特别是在企业应用程序中,具有大参数列表和大量代码行的函数很难修改/调试。这些功能必须分解为多个较小的功能,每个功能都执行一个定义良好的步骤,该步骤是较大任务的一部分

你的工作就是编写好的、干净的、有效的代码。编译器的工作是提高效率。显然,它比你能做的要好得多


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

给一个实体一个内聚的职责 是由Alxand ReSuc.

在C++编码标准中的第5条标题。 在我看来,您将失去清晰度,增加维护成本,并有更大的机会在“一刀切”的场景中引入bug


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

扩展函数(即更少的函数调用)唯一有益的情况是在嵌入式系统中,可能没有超头。@M4rc,谢谢你的回复。我想知道是否没有任何编译器切换到真正的“内联”函数,用于优化嵌入式系统的编译代码!我想我不会马上想到这一点,尽管禁用优化在理论上应该使可执行文件尽可能接近您键入它的方式,让您拥有更多的控制权。但和其他事情一样,这只是一个建议。我很确定嵌入式C/C++编译器在这种情况下包含了不同种类的优化。@M4rc,明白了。我对可维护性的强烈倾向来自于目前在一个遗留系统上的工作,在这个系统中,很难从此类代码中对功能方面进行反向工程,并且希望有机会与潜在的开发人员分享经验,他们会查看代码。谢谢你的建议,顺便说一句。哈哈,没有必要为自己辩护,我的朋友,尤其是在我看来,你是完全正确的。我喜欢编程的一点是,有不止一种方法可以到达总部。