前提・実現したいこと
元々Java開発をしていましたが、現在Rails開発に携わっています。
rubyにおいてですが、
returnすることによって、後続処理が実行されなくなると思います。
しかし、その処理をメソッド化するとreturnの箇所処理も実行されてしまいます。
メソッド化(リファクタリング)する際はどのようにすればいいのでしょうか?
試したこと
例えば以下のコードです
ruby
1 2if [true, false].sample 3 if [true, false].sample 4 p 'a' 5 return p 'ですよ' 6 end 7 8 p '真です' 9else 10 if [true, false].sample 11 p 'a' 12 return p 'ですよ' 13 end 14 15 p '偽です' 16end
上記は、以下のパターンの期待値です。
「a ですよ」「真です」「偽です」
以下の箇所が重複しているので
p 'a' return p 'ですよ'
これを以下のようにメソッド化すると
ruby
1 2def adesuyo 3 p 'a' 4 return p 'ですよ' 5end 6 7 8if [true, false].sample 9 if [true, false].sample 10 adesuyo 11 end 12 13 p '真です' 14else 15 if [true, false].sample 16 adesuyo 17 end 18 19 p '偽です' 20end
returnがメソッドの返却値の意味を持ち、期待値は以下のパターンです。
「a ですよ 真です」「a ですよ 偽です」「真です」「偽です」
期待値が変わってしまいます。
メソッド化前の期待値のまま、リファクタリングすることはできますでしょうか?
returnをメソッド内に含ませると意味が変わるので、リファクタリングする余地はないでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/02 15:21