我正在编写一个大型C程序,并且有一个包含大量变量的文件file.c
。假设它有一个名为func()
的函数正被其他文件使用。
不幸的是,函数func()
必须使用大量的变量,因为它包含很多代码,所以我决定编写一些func()
使用的函数来制作代码更具可读性。现在,我有三个主要的可能性:
将变量声明为全局变量。
将变量声明为func()
内的局部变量,并使用结构(或您可以想到的任何其他技巧)将这些变量作为参数传递给file.c
内的函数。
将变量声明为local,而不是使用其他函数,只需将所有代码抛出func()
,这将导致代码非常长且无法读取。
有什么建议吗?
答案 0 :(得分:2)
一般来说,第二种选择是最好的。
过度使用全局变量被认为是一种不好的做法。
在某些情况下,它可能是性能不佳的原因,因为必须加载全局,而如果你可以保存变量local,它可以存储在寄存器中。
此外,代码重用更容易。接收参数的函数更通用。它可以在各种用例中调用。使用全局的函数只能在一个上下文中执行。
此外,全局变量可用,因此很可能也在程序中的任何地方使用。这意味着它们可以从许多地方访问和写入。验证它们的值可能会导致开销。
底线:模块化代码更易读,更易于维护。
答案 1 :(得分:1)
“大量的变量”听起来像一团糟,可以组织成一个或几个结构。如果我是你,我要做的第一件事就是分析file.c,以便更好地了解哪些是最常用的变量以及它们彼此保持的关系,然后我将这些信息分组。到结构,然后可以作为指向函数的指针传递。最少使用的变量有合理的机会成为函数调用级别的常量,因此请注意这一点。如果我发现具有重复含义和内容的变量,我不会感到惊讶,所以我相信你在这里有很多优化的机会。仔细想想,也许您所看到的大量变量可以简化为一个或两个紧凑的结构。
一般尽量避免使用全局变量。仅将它们用作将内容导出到其他模块的最后资源,并且当使用任何其他解决方案意味着性能丢失时。