1

我正在编写一个大型 C 程序,并且有一个file.c包含大量变量的文件。假设它有一个名为的函数func()正在被其他文件使用。

不幸的是,该函数func()必须使用大量变量,并且由于它包含大量代码,因此我决定编写一些用于func()使代码更具可读性的函数。现在,我有 3 种主要可能性:

  • 将变量声明为全局变量。

  • 将变量声明为内部局部变量,并使用结构(或您能想到的任何其他技巧)func()将这些变量作为参数传递给内部函数。file.c

  • 将变量声明为本地变量,而不是使用其他函数,只需将所有代码都扔进去,func()这将导致代码非常长且不可读。

有什么建议么 ?

4

2 回答 2

2

一般来说,第二个选项是最好的。

过度使用全局变量被认为是一种不好的做法。

在某些情况下,这可能是性能不佳的原因,因为必须加载全局变量,而如果您可以将变量保留在本地,则可以将其存储在寄存器中。

此外,代码重用要容易得多。接收参数的函数更通用。它可以在各种用例中调用。使用全局的函数只能在一个上下文中执行。

此外,全局变量是可用的,因此很可能也在程序中的任何地方使用。这意味着它们可以从许多地方访问和写入。验证它们的值确实会导致开销。

底线:模块化代码确实更具可读性且更易于维护。

于 2013-09-03T17:43:31.683 回答
1

“大量变量”对我来说听起来像是一团糟,可以组织成一个或多个结构。如果我是你,我会做的第一件事是分析 file.c,以便了解哪些是最常用的变量以及它们之间的关系,然后我会根据这些信息对变量进行分组到结构中,然后可以作为指向函数的指针传递。最少使用的变量有合理的机会在函数调用级别成为常量,因此请注意这一点。如果我发现变量具有重复的含义和内容,我不会感到惊讶,所以我相信你在这里有很大的优化机会。仔细想想,也许你看到的大量变量可以简化为一两个紧凑的结构。

一般尽量避免使用全局变量。仅将它们用作将某些内容导出到其他模块的最后资源,并且当使用任何其他解决方案意味着性能损失时。

于 2013-09-03T18:22:29.980 回答