【问题标题】:dividing big functions efficiently高效划分大功能
【发布时间】:2014-11-06 10:17:25
【问题描述】:

我目前正在制定一个指南,以提高嵌入式系统领域基于模型的 C 编程的可测试性。

我遇到的第一件事是他们创建了非常大的(例如 4k 行)函数。 对于测试问题,我建议将代码分成更小的部分。 但是我发现了某种问题,想用现在最有效的方法来解决这个问题。

想象一下以前的 4k 行函数有 10 个局部变量。
现在我需要将这些变量传递给使用它们的每个函数。 什么是最好的,也就是最有效的方式来做到这一点。

目前我有两个想法,都有一些缺点:

  1. 通过引用需要它们的函数来传递局部变量。我需要使用引用,因为许多函数会改变变量的某些内容。缺点:引用到堆 -> 速度降低。
  2. 使本地人在文件级别可见。缺点:由于变量的生命周期更长,因此总体上会占用更多内存。

是否有其他方法可以减少缺点?

【问题讨论】:

  • 对于 currios 人:模型开发的工具是 ASCET

标签: c embedded


【解决方案1】:

如果整个 4,000 行的函数能够在 10 个变量上勉强过关,我想你可以算得上幸运了。

我会通过收集结构中的变量来清理它,该结构在第一个函数中被实例化,然后通过传递一个指针与子函数共享。性能应该与您的性能非常接近。

此外,C 中没有“引用”,使用该术语可能会让人感到困惑。

【讨论】:

  • 好吧 10 轻描淡写,现实中还有更多,例如 30-40
  • 我同意,我可以补充一点,要么变量是相关的,这就是为什么子函数需要所有变量(然后使用结构),或者变量不相关,IMO 不同的子函数将需要不同的子集变量。
  • 更像是每个函数都需要一些函数
【解决方案2】:

形成一个结构,该结构具有您要传递的变量,并将该结构变量/结构指针发送给您调用的任何函数。这将减少传递更多的参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    相关资源
    最近更新 更多