在我的应用程序中,我注意到我有大约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;
答案 0 :(得分:4)
将变量移动到使用它们的类。您没有告诉我bContinuePlay
,oldIpAddress
和path
彼此之间有任何关系。
答案 1 :(得分:1)
这取决于程序。如果您的所有代码都是一个main
函数,为什么不呢。如果它是一个庞大的系统,当然它不会是一个好的设计,因为它后来会变得混乱。
答案 2 :(得分:0)
只有在程序中的许多函数中需要它时,全局变量才有用,传递它会使参数列表过长。
然而,使用全局变量作为一次变量是不好的做法。
答案 3 :(得分:-1)
是肯定的。尽量避免全球化,他们并不好。 您可以使用实用程序类的静态成员,或传递输入和输出参数或类成员。
例如,Java没有独立的参数,一切都是类或者属于你的例子我会创建一个包含所有配置的类。类似
类GameConfiguration 并且可能添加静态方法(如果你没有多线程)..