BIB*_*IBD 3 c# vb.net visual-studio
我今天跑过这样的代码; 具有对整个类可见的流控制标志.我的直觉说这是处理流量控制需求的错误方法(它几乎就像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
Run Code Online (Sandbox Code Playgroud)
对我来说很明显,它是在事后嫁接的.我正计划重新编写代码,以便bMyFlag是传递给mySub3,mySub4和mySuvN的参数.但是,在我这样做之前:
是否有一个有效的理由让流控制标志对于类是全局的?
或者如果没有,为什么这被认为是不好的做法?
Mat*_*ggs 12
这不是一个全局(即应用程序范围)变量,它是实例级别(即作用于该类)这没有任何问题,所以这就是预期的.
因此,当该标志为真时,如果整个实例都为真,那就应该是它.如果它是每次以完全不同的方式使用的一些通用的东西,那么它不应该在那里声明.
在这种情况下,bMyFlag似乎引入了不必要的状态,这可能使开发复杂化(调试等).某些子例程会修改其值,而其他子例程则根据其当前值执行不同的操作.这似乎带来了不必要的复杂性,可以通过一些重构来减少.为什么不直接将一个布尔值传递给mySub1和mySub2,然后让这些子程序用该值作为参数调用其他函数?
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |