好吧,这是一个简单的问题,但我想在这里的正确做法的一些oppinions。我不关注性能方面的问题,因为CPU功能非常强大,除非在没有循环构造的情况下调用数千次迭代,否则不会产生任何可察觉的差异。我只想看看什么是公认的标准。什么是从布尔方法返回的公认做法
我有一个方法bascially只是做检查返回一个布尔值。但是,有很多方法来实现这一点。
这是我通常会如何实现这一点。
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;
}
这是更简化,因为它摆脱其他。但是,如果值为真,则通过将其初始化为false来进行不必要的分配。
你担心的是没有多大意义的一个细节的原因应该变得明显。编译器可能会优化掉大部分差异,即使不是这样,除非您正在谈论数百万(不是数千)的循环,否则不太可能会注意到这种差异。 – hatchet