イディオム

RailsによるアジャイルWebアプリケーション開発 第2版

RailsによるアジャイルWebアプリケーション開発 第2版

を見ていた時に発見した。
Rubyではこんな書き方ができるらしい。おもしろい。

#countが値を持っていない時に、0を代入する
count ||= 0 

こちらの省略記法らしい

#countが値を持っていない時に、0を代入する
count = count || 0 

こんな書き方もできる

#countが値を持っていない時に、0を代入する
count = 0 unless count 

どれが一番Rubyらしい書き方なんだろう??
個人的には好きな書き方はunlessを使う方法だった。
でも、count変数が2回出てこない書き方はスマートで良い。

今後この書き方をしていこうかなー。

話が少し脱線します。

脱線

こういうコードを書くと、「誰にでもわかる書き方じゃない」とか言ってコードレビューで赤ペンをいれる人がいます。*1

Perlの「There's More Than One Way To Do It」ではないけど、MatzさんがどこかでRubyの「やり方は色々」について言及していた覚えがあるので、きっとこんなメソッドが用意されている事自体「使ってくれよ!!」という事ですよね??きっと…
count++ というインクリメントな書き方を意図的にできないよう*2にしているくらいだし。(^^

やっぱそういうのって育ってきた企業文化の影響とか、言語ごとの文化や特性を見極められていないからなのかなぁ。*3
Perl使うんだったらPerlらしく。Rubyを使うんだったらRubyらしく書きたい。
Javaも然り。

なんでもかんでも「Javaっぽく」とか「VBっぽく」書く事を強要されると色んな意味でキツイ。


一番最初にOJTをしてくれた先輩はHello World!を教える前に、言語ごとに文化というものがある事を教えてくれた。
学べば学ぶほど、背景とか文化とか大事だなと思う今日この頃でした。

*1:経験あり。

*2:意図的に実装をしていない。

*3:「標準化」とか「平均化」とか「メンテナンス性」とか言いたい事はわかるけど、ちょっと違うんじゃない??と思う事もあるので。