有時候我發現自己寫,看起來像這樣一個布爾值方法:這種布爾方法是不好的做法嗎?
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