今天我们要谈论的话题是C语言中为何没法规避全局变量?
之所以谈论这个话题,主要是最近有几个粉丝朋友问到了类似的问题:“我代码中全局变量太多了,有没有一种方法不使用全局变量来编写C语言程序?”
当时并没有感觉特别惊讶,因为曾经的我也是在这条道路上探索着,只是在C语言编程这条路上走得多一点,相对想得更加明白一点罢了。
对此,我的回答是:“没有办法规避全局变量的~”
1
耦合
其实自认为“没有办法规避全局变量的”,这个答案相对而言并不是特别专业,却能够让更多的人听懂。
在最开始使用C语言进行项目开发的过程中,都会提示要你用模块化思想来编程,怀着“低耦合,高内聚”的编程理念。
但是你应该没有听说过模块之间无耦合吧,所以耦合和内聚都是相对而言,当采用了一种不是最优的设计思想和方法,便编写出了一套耦合度较高的代码罢了。
而所谓的耦合便是你所划分的各功能模块代码之间的数据共享了。
我一直相信代码中的所有设计都可以在这世间找到类比原型,同样这世间规律也完全可以用程序来进行表达,只是目前的科技水平还并没有达到那么水平,或许人工智能就是一个萌芽吧。
而在C语言中全局变量的使用,便是一种数据共享的方式,同样也是模块化沟通的桥梁。
有朋友该说了,我不进行数据共享便不会使用全局变量了。
比如点了个灯,同时又写了串口通信程序,两者并没有什么联系,各自安好,那确实没有数据共享,也可以不使用全局变量,最多认为你在静态存储区定义了几个变量吧。
2
联系
这世间原本就是千丝万缕羁绊着而存在,或许从蝴蝶效应看来就会颇有感触,那么编程中也是一样的,相互之间的存在着某种联系才愈发精彩,而这种联系的表达则少不了数据的共享。
程序员们要用C语言来描述这世间种种规律,使用全局变量还逃得掉吗?
即便有一种语言可以达到不使用类似于全局变量的语法形式,但数据的共享终究逃不了。
3
面向对象
面向对象的程序设计思想就是目前约束全局变量使用的一味良药,面向对象与面向过程都是一种思维方式的存在,并非孰优孰劣。
但就目前软件设计的发展来看,面向对象的程序设计思想在大型程序的设计和把控上有更多的优势。
它能够把各个抽象的个体描绘得更加的直观,这样个体之间的相互联系也就顺理成章的表达和约束。