我今天遇到了类似这样的代码;具有对整个班级可见的流量控制标志。我的直觉告诉我们,这是处理流量控制需求的错误方法(它几乎就像C中的旧时代的全球旗帜)。全局变量仍然不好?
(这个例子是在VB.Net,但类似的事情可能在C#来完成。)
Public Class myClass
Private bMyFlag As Boolean ''// <------
private sub New
bMyFlag = false
end sub
private sub mySub1
bMyFlag = true
mySub3()
mySub4()
mySubN()
end sub
private sub mySub2
bMyFlag = false
mySub3()
mySub4()
mySubN()
end sub
private sub mySub3
if bMyFlag then
DoSomething()
else
DoSomethingElse()
end if
end sub
private sub mySub4
if not bMyFlag then
DoSomethingDifferent()
else
DoSomethingReallyDifferent()
end if
end sub
private sub mySubN
if not bMyFlag then
DoNotPassGo()
else
DoNotCollect200Dollars()
end if
end sub
end class
很明显,我认为这是事实后嫁接。我打算重新编写代码,以便bMyFlag是传递给mySub3,mySub4和mySuvN的参数。但是,在我这样做之前:
是否有一个有效的理由让流控制标志对类是全局的?
如果不是,为什么这被认为是不好的做法?
我不打算发布一个完整的答案,但你应该了解得墨忒耳定律:HTTP:// EN .wikipedia.org/wiki/Law_of_Demeter – 2009-09-01 21:09:47