Rubyでは、
メソッドの戻り値を記述するのに、
returnを書く必要はありません。
書かなければ、メソッドの最後に書いた値が、
戻り値として返されます。
と聞いたときには、
単に書く量を減らす、スクリプト言語的な機能なのかと思っていましたが。
試しに使ってみると、
数時間でそのすごさがわかりました。
これがかなりコードの可読性を上げる効果を持っています。
たとえばC#ではreturnが必要なので、
if分で分岐を表すという読み方もできますが、
特売日とそうでない場合の値引き価格の定義をそのまま書いてある、
という読み方をすることもできます。
構文のちょっとした工夫でこのような宣言的な書き方を可能にしているというのは。
Rubyの素晴らしさですね。
メソッドの戻り値を記述するのに、
returnを書く必要はありません。
書かなければ、メソッドの最後に書いた値が、
戻り値として返されます。
と聞いたときには、
単に書く量を減らす、スクリプト言語的な機能なのかと思っていましたが。
試しに使ってみると、
数時間でそのすごさがわかりました。
これがかなりコードの可読性を上げる効果を持っています。
たとえばC#ではreturnが必要なので、
int Get値引き価格()
{
return 価格 * 値引き率;
}
とかいう記述になります。
短い記述ですが、これだとあくまで価格を計算してそれを返すという記述になっていて、
処理の流れが明確に記述されてしまっています。
それに対してRubyでは、
def 値引き価格
@価格 * @値引き率
end
と書くことができます。
これは、値引き価格がどう定義されているかを宣言的に記述したもの、
と読むことができます。
書くときには多少注意が必要ですが、
読むときには、
どうやって実行するかではなく、
何をしたいかを明確に読み取ることができています。
さらにRubyではこういう考え方が制御構文にも徹底されており、
def 値引き価格なんて書き方もできます。
if @特売日
@価格 * @値引き率 * 0.9
else
@価格 * @値引き率
end
end
if分で分岐を表すという読み方もできますが、
特売日とそうでない場合の値引き価格の定義をそのまま書いてある、
という読み方をすることもできます。
構文のちょっとした工夫でこのような宣言的な書き方を可能にしているというのは。
Rubyの素晴らしさですね。