我前幾天正在尋找一個Ruby代碼質量工具,並且碰到了看起來很有意思的pelusa寶石。它檢查的一件事是給定的Ruby文件中使用的else語句的數量。Ruby爲什麼不鼓勵其他語句?
我的問題是,爲什麼這些不好?我明白if/else
語句通常會增加很多複雜性(而且我的目標是降低代碼複雜度),但如何在不使用else
的情況下編寫檢查兩個案例的方法?
總括來說,我有兩個問題:
1)難道還有比減少了代碼的複雜性,可能避免else語句以外的原因?
2)以下是我正在使用的應用程序中的示例方法,它使用else
語句。你會怎樣寫這個沒有?我能想到的唯一選擇是三元語句,但這裏有足夠的邏輯,我認爲三元語句實際上會更復雜,更難以閱讀。
def deliver_email_verification_instructions
if Rails.env.test? || Rails.env.development?
deliver_email_verification_instructions!
else
delay.deliver_email_verification_instructions!
end
end
如果你寫了這個帶有三元運算符,這將是:
def deliver_email_verification_instructions
(Rails.env.test? || Rails.env.development?) ? deliver_email_verification_instructions! : delay.deliver_email_verification_instructions!
end
是嗎?如果是這樣,是不是更難以閱讀? else
聲明是否有助於解決這個問題?有沒有另一種更好的方式來寫這個,我沒有想到?
我想我在這裏尋找文體考慮因素。
好在'else'上寫下代碼的氣味:http://solnic.eu/2012/04/11/get-rid-of-that-code-smell-control-couple.html – michaelmichael
這就是相當不錯,還有一些我在尋找的東西(雖然在我的腦海裏有點偏)。小心張貼作爲答案,詳細說明,併爲額外的業力點,重構我的例子或使用你自己的例子來說明?或者你覺得這個帖子應該作爲一個答案? – nickcoxdotme
過度使用是不好的,因爲它是一個堅決要求避免。有一段時間和一個地方,並且用正確書寫的代碼,偶爾它是正確的解決方案。它可能會混淆意大利麪條代碼,所以應避免編寫代碼錯誤的代碼,其餘部分應該自行處理。 –