是否正确编程以使用许多全局变量?

时间:2013-05-20 16:47:08

标签: c#

在我的应用程序中,我注意到我有大约30个全局变量。 是不好的编程和击球方式是使用函数传递给变量或无关紧要?

这是来自public partial class MainWin : Form

的所有全局变量的列表
private const int WM_SYSCOMMAND = 0x112;
private const int SC_CONTEXTHELP = 0xf180;
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
NetworkAdapter selectedAdapter = null;
string lastPath = "";
int _selectedIndex;
bool bContinuePlay;
bool ifContinue = true;
decimal delay = 10;
int delayBetweenLoops;
ManualResetEvent manualResetEvent = new ManualResetEvent(false);
BackgroundWorker backGroundWorker = null;
bool isBurst = true;
IpV4Address oldIpAddress;
IpV4Address newIpAddress;
ushort oldPort;
ushort newPort;
MacAddress oldMacAddress;
MacAddress newMacAddress;
bool fixBadChecksum = false;
bool removePPPOE = false;
bool removeVlan = false;
bool fragmentation = false;
private DateTime lastCheck = DateTime.MinValue;
bool continuePlay = true;
RangeFinder range = null;
IpV4Address oldRangeIp;
IPAddress newRangeIpStart;
int loopsCount;
decimal numberOfLoops;
double playSpeed;
string path = "";
bool isError = false;

4 个答案:

答案 0 :(得分:4)

将变量移动到使用它们的类。您没有告诉我bContinuePlayoldIpAddresspath彼此之间有任何关系。

答案 1 :(得分:1)

这取决于程序。如果您的所有代码都是一个main函数,为什么不呢。如果它是一个庞大的系统,当然它不会是一个好的设计,因为它后来会变得混乱。

可能值得一读:http://c2.com/cgi/wiki?GlobalVariablesAreBad

答案 2 :(得分:0)

只有在程序中的许多函数中需要它时,全局变量才有用,传递它会使参数列表过长。

然而,使用全局变量作为一次变量是不好的做法。

答案 3 :(得分:-1)

是肯定的。尽量避免全球化,他们并不好。 您可以使用实用程序类的静态成员,或传递输入和输出参数或类成员。

例如,Java没有独立的参数,一切都是类或者属于你的例子我会创建一个包含所有配置的类。

类似

类GameConfiguration 并且可能添加静态方法(如果你没有多线程)..