【发布时间】:2016-04-14 07:04:32
【问题描述】:
我遇到了一个有 6k 行的源文件,它完全适用于全局变量,并且有很多函数可以操作 void func(void) 但会更改全局变量。一些全局变量是带有结构体和函数指针的结构体,即使是数据也很难很好地掌握。
代码难以阅读、难以维护和测试,因为函数没有真正的接口描述,但“无处不在”。
现在我想知道是否有理由以这种方式编码(完全使用全局变量而不是使用指针作为参数)?它可能更快或更小,还是有其他好处可以使它比带有指针的结构良好的函数更有用?
【问题讨论】:
-
IMO 滥用全局变量并没有太多好处。该程序可能会运行得更快一些,也可能会稍微小一些,但这可能无关紧要。
-
广泛使用全局变量会导致(如您所说)代码更难测试和维护。全局变量有其用途和目的,但我看不出以您提出的广泛使用方式有任何优势
-
它认为,代码已经从一个具有全局性的小程序发展而来,然后演变成您的复杂遗产。没有人花时间和精力去重构它,因为它刚刚好用(ncars)。
-
我怀疑其中一些已经增长。但由于它用于通信协议,它的很大一部分从一开始就存在。并且新实现的函数仍然可以使用指向变量的指针以使其更具可读性。
标签: c pointers global-variables