在我的程序里使用了大量的全局变量,它们作用于整个程序的各功能函数以及窗口过程,我想问这样是不是不太好啊,会对程序有哪方面的影响啊?怎样才能避免全局变量呢?
我看有的工程文件中都是把函数头说明及变量声明统一放到一个头文件中,把功能函数体放到一个单独的CPP文件中,然后主程序与窗口过程放到一个CPP里,这样做有什么好处啊,是不是可以避免全局变量或者是其它的?请各位大哥给小弟讲讲吧?来者有分!
我看有的工程文件中都是把函数头说明及变量声明统一放到一个头文件中,把功能函数体放到一个单独的CPP文件中,然后主程序与窗口过程放到一个CPP里,这样做有什么好处啊,是不是可以避免全局变量或者是其它的?请各位大哥给小弟讲讲吧?来者有分!
举个最典型的一个例子:
VC中最常见的现实对话框的方法是CMyDialog dlg;
dlg.DoModal();就是用了局部变量的方法。而在Delphi里最常见的却是form1.Show();这里就是用的全局变量的方法。两者的优劣见仁见智,VC的做法会在内存占用上占点优势,Delphi的做法在速度上占点优势, 就现在的计算机换环境而言,两者的优势都有限的很。因此全局变量的使用没有好不好的问题,该用的就用。对于全局变量的处理也只存在于两个方面的目的:
1。 更好的组织代码。更具有可读性。
2。 避免混乱。将全局变量放入一个统一的头文件,是为了目的1。
进一步将全局变量封装起来,则不仅满足了目的1;而且满足了目的2。他们不仅能够搞好的维护,而且处于一个名字空间中。基本上能够防止编码时无意识(变量重名混用)。即使是全局变量,也可以分类的。如果是与某些类相关的,最好是分散到该类中,用类的静态变量来代替全局变量(如DesignPattern中的SingleTon和FlyWeight)。如果是常量的话,也可以用类的Enum类型来代替(如对话框资源ID 封装在对话框类中CMyDialog::IDD)。