c - 处理大量变量

标签 c design-patterns global-variables

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

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

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

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

  • 将变量声明为局部变量,而不是使用其他函数,只需将所有代码放入 func() 中,这将导致代码非常长且难以阅读。

有什么建议吗?

最佳答案

一般来说,第二种选择是最好的。

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

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

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

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

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

关于c - 处理大量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598107/

相关文章:

c++ - 这是在 C++ 中实现组合的正确方法吗?

用于数据库应用程序的 Java JDBC 与 JPA

java - REST API 调用是否应该在存储库层上使用 @Repository 进行?

angularjs - 如何在 Angularjs 模板中访问常量

c++ - 如何将 byte[] 复制到 char*?

c++ - Makefile:链接器错误

c - 使用 gcrypt.h 在 C 中 undefined reference

.net - .NET 中的全局变量(或替代)最佳实践

spring - 注销后如何启动全局变量?

c - ubuntu 日志文件中的时间戳