【发布时间】:2011-08-03 13:46:13
【问题描述】:
好的,这是一个简单的问题,但我想对这里的正确做法提出一些意见。我不是出于性能问题考虑这个问题,因为 CPU 非常强大,除非在没有经过数千次迭代的循环结构的情况下调用它,否则这不会产生任何明显的差异。我只是想了解什么是公认的标准。
我有一个方法,基本上只是检查返回一个布尔值。但是,有很多方法可以实现这一点。
这是我通常的实现方式。
public bool CanUndo()
{
if (_nCurrentUndoIndex > 0)
return true;
else
return false;
}
但是,从方法的中间返回通常是不受欢迎的。我通常唯一一次这样做是在对这样的表单提交进行检查时。
if (String.IsNullOrEmpty(firstName.Text))
{
MessageBox.Show("Please enter a first name", "Incomplete");
return;
}
我认为这是可以接受的。
回到撤消问题,另一种编码方式是这样。
public bool CanUndo()
{
bool returnVal;
if (_nCurrentUndoIndex > 0)
returnVal = true;
else
returnVal = false;
return returnVal;
}
然而,这不必要地分配了一个变量并且是更冗长的代码。另一种选择是。
public bool CanUndo()
{
bool returnVal = false;
if (_nCurrentUndoIndex > 0)
returnVal = true;
return returnVal;
}
这更加精简,因为它摆脱了 else。但是,如果值为 true,则通过将其初始化为 false 来进行不必要的分配。
【问题讨论】:
-
您正在担心一个无关紧要的细节。编译器可能会优化掉大部分差异,即使没有优化,您也不太可能注意到差异,除非您谈论的是数以百万计(而不是数千)的循环。