イディオム
RailsによるアジャイルWebアプリケーション開発 第2版
- 作者: Dave Thomas,David Heinemeier Hansson,Leon Breedt,Mike Clark,Andreas Schwarz,James Duncan Davidson,Justin Gehtland,前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2007/10/26
- メディア: 大型本
- 購入: 18人 クリック: 300回
- この商品を含むブログ (138件) を見る
を見ていた時に発見した。
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!を教える前に、言語ごとに文化というものがある事を教えてくれた。
学べば学ぶほど、背景とか文化とか大事だなと思う今日この頃でした。