【发布时间】:2010-10-27 19:36:43
【问题描述】:
我有一个用于将我的应用程序资源更新到当前应用程序版本的代码。 此代码在应用程序更新后调用。
int version = 1002; // current app version
switch(version)
{
case 1001:
updateTo1002();
goto case 1002;
case 1002:
updateTo1003();
goto case 1003;
case 1003:
updateTo1004();
goto case 1004;
break;
case 1004:
updateTo1005();
break;
}
这里我们有一个级联方法通过跳转到指定的案例块来调用。 我想知道 - 在这种情况下使用 go to 是一种好的做法(通常被认为是这样的坏做法!)? 我不想一个接一个地调用方法——像这样:
updateTo1002()
{
// do the job
updateTo1003();
}
updateTo1003()
{
// do the job
updateTo1004();
}
是否有任何设计模式描述了这样的问题?
【问题讨论】:
-
啊!这么多死猫!更严肃地说,为什么你反对链接方法调用但 goto 似乎没问题?我猜这个例子并不能反映你的代码的真实性质......
-
没用过C#,但它不允许你做
case:fallthroughs? -
@Nick C# 不允许有目的的 case fallthroughs,因为 大多数 case fallthrough 是一个难以发现的错误,而少数情况下它实际上是可取的有合适的替代品。
-
@Michael:嗯,C#可以让你明确地失败。不幸的是,它也不允许这样做。
-
这实际上是一种简洁的自我记录,但你会从那些看不到他们在学校学到的“goto”这个词是邪恶的人那里得到无穷无尽的废话。我的观点?即使你能找到一个非常有效的 goto 用法,也不值得你花这么多废话。
标签: c# design-patterns goto