有时候我发现自己写,看起来像这样一个布尔值方法:这种布尔方法是不好的做法吗?
public bool isRunning()
{
if (!(move == Moving.None) && staminaRegan == true)
{
if (keyState.IsKeyDown(Keys.Space))
{
EntityAnimation.interval = 10;
return true;
}
else
{
EntityAnimation.interval = 65;
return false;
}
}
else
{
EntityAnimation.interval = 65;
return false;
}
}
(这是顺便说一下XNA)正如你所看到的,我有我做的if语句布尔isRunning其中进出口检查如果(玩家正在移动)& &(恢复耐力,一旦耐力达到小于6.0f的值就设置为假) 然后我只是检查空间是否按下,如果是,那么我的动画更快(间隔越小, Spritesheet变化越快),然后它发送真值,这意味着Player正在运行,否则Im不会导致空间没有按下。
然后我必须在第一个if语句之外重复这个'else'代码,以便发送Player没有运动或者他的耐力Regan是假的时候没有运行;
所以我只是想知道这是一种布尔方法被认为是一种不好的做法(在嵌套的情况下,如果重复真假值,然后在嵌套的情况下返回false,并重复相同的代码)?
我同意有一个return语句,它在底部,看起来很干净。并且,由于您已经将结果初始设置为false,因此无需在方法中进一步重置 - 从而增加了可读性。 – horHAY
*在一个方法中有一个返回语句是一个好习惯。* [No.](http://programmers.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-只有来自)将代码强制调整为与实际执行的逻辑不匹配的特定模式是不好的。另见http://www.goodreads.com/quotes/353571-a-foolish-consistency-is-the-hobgoblin-of-little-minds-adored –
是的,只有一个返回语句是好的做法,它是甚至在我为之工作的大多数公司中也是如此。代码更可读,但更重要的是维护更重要。我看到人们搜索几小时,为什么在方法底部的retun语句之前新添加的logmethod没有得到执行。 – GuidoG