rubyinside.comに 21 Ruby Tricks You Should Be Using In Your Own Codeという記事が掲載されていました。
よりRubyコードをシンプルに読みやすくするために覚えておいて損はないですね。
勉強になりましたので抄訳しました。
1 - 正規表現にマッチした文字を抜き出す簡単な方法
文字列から正規表現にマッチした文字を抜き出す場合、通常はmatchもソッドを使いますが、次のようなショートカット方法もあります。
2 - Array#joinのショートカット
配列に数値を渡し、要素を複製するArray#*メソッドはよく知られていますが、Array#*に文字を渡すことで、文字列を結合させる方法はあまり知られていないようです。
3- 小数の簡単なフォーマット方法
価格の表示に小数点のフォーマットをそろえるにはsprintfの代わりに次の方法を使うことができます。
4 - テキストを囲む簡単な方法
#3のフォーマットテクニックと同様に文字列を他の文字列の中に差し込むことができます。
配列をつかうこともできます。
5 - ファイルツリーを削除
簡単にShellを使ってはいけません。Rubyは使いやすいファイルユーティリティライブラリを持っています。
このメソッドを使う時は十分ご注意を!
6 - Enum要素を爆破
*はArrayやHashのようなEnum要素を*爆破*することができます。なんの事をいっているかは次の例をみてください。
7 - ローカル値の定義をやめる
空のHashやArray でローカル値の定義する代わりに、次のように定義と同時に使うことができます。
8 - ハッシュキーに文字やシンボルじゃないものをつかう
シンボルや文字列以外のものをハッシュキーに使っているのをみることはほとんどありませんが、つかうことができ、時に使いやすいでしょう(次の例はあまりよい例ではないですが)。
9 - ‘and’ と’or’を使って一行に処理をまとめる
より自信のあるRuby開発者がコードを短くして、ifやunlessなど短い複数行を省くためのトリックです。
10 - requireされた時ではなく直接実行されていた場合に何かを行う
このパターンは上級Ruby開発者にはよく使われています。ライブラリとしてや、コマンドラインからディレクトリの下から呼ばれているのではなく、直接rubyコードが呼ばれている場合のみ処理を行います。
11 - 複数データの簡単割り当て
複数データの割当はRuby開発者が早期に学ぶことですが、簡単な割にほとんど使われていないのには驚きです。
要素数の指定がないメソッドの引数として配列を*でバンドルするのは特に役立ちます。
つぎのような賢い使い方も
12 - 数値の比較に複数の比較ではなくrangeインスタンスを使う
もうif x > 1000 && x < 2000 を使わないで次のコードをつかいましょう。
13 - 配列をつかって重複したコードをカット
14 - 比較演算子
比較演算子もまた、Ruby開発者が早期に学ぶトリックですが、ほとんどみることがありません。
15 - ネストされた比較演算子
トラブルを引き起こすでしょうが、比較演算子はネストすることができます。
16 - Rubyの論理式を簡素に
よくつぎのようなメソッドパターンをみますが、
おそらく次のように比較演算子を使って、よい短くできるのでは?
確かに。このパターンはよく見ますが、もう一歩すすめてください。
17 - 例外のバックトレースのすべてをみる
18 - 配列とシングルオブジェクト両方で繰り返し処理
19 - Rescueブロックはbeginでくくる必要はない
20 - ブロックコメント
これは古いRuby学校のコードでよくみますが、あまりつかわれていないようです。ポンドマークのついた巨大な行よりも見やすいのでは?
21 - rescueの救出
一行でrescueを使う事で例外が発生した場合に値を返すことができます。
原文のコメント欄にも他のTipsや意見等が投稿されていました。
おまけ1 - 6と11を組み合わせるとこんな風にかけます。特にArray#splitと一緒に使うと特に便利です。
> a, b, *c = 1, 2, 3, 4, 5, 6
a => 1
b => 2
c => [3, 4, 5, 6]
おまけ2 - 最初から12個のフォボナッチ数を求める
10.times { (fib ||= [1, 1]) << fib[-1] + fib[-2] }
他にもRubyコードのTipsがあれば知りたいです。
Tags: ruby
