【发布时间】:2016-01-06 00:44:53
【问题描述】:
我刚开始一个职位,在工作日结束时,我通过慢慢阅读我们的代码库来等待流量。我遇到了这一点,即使在白板上花了相当长的时间后,我仍然想不出提取goto 的方法。有没有办法消除这种跳跃?
public void MyUpdate(MyType foo)
{
/*Prep code for the loops*/
foreach (Thing bar in something)
{
foreach (Collection item in bar.Stuff)
{
Data dataRX = item.First;
if (dataRX != null && dataRX.ID.Equals(globalNonsense.ID))
{
// Update Data with the latest changes
dataRX.fooBuddy = foo;
goto exitLoops;
}
}
}
exitLoops: ;
}
【问题讨论】:
-
如果
exitLoops在方法的末尾,为什么不return? -
@YacoubMassad 好主意,但在某些编码标准中,
returning 在函数中的多个位置被认为是错误的形式,例如 goto。 -
我更喜欢
return解决方案。提到的代码标准也不像我的回答那样喜欢breaks。但我认为这些标准通常是非常理论化的,在这种情况下不要太认真。
标签: c# foreach refactoring goto