Effective Ruby 第1章まとめ

こんにちは!kossyです!



さて、今回はEffective Rubyという書籍を読んだので、備忘録としてブログに要件だけ残してみたいと思います。
1回読んだだけでは全て頭に入らないので、、、泣

Effective Rubyは8章立てになっているので、8回に分けて更新することになると思います。



では、まずは第1章です。



第1章

1-1. Rubyは何を「真」と考えているかを正確に理解しよう

  • false, nil以外の全ての値は「真」である
  • 多くの言語とは異なり、Rubyでは、数値ゼロは「真」である
  • falseとnilを区別しなければならない時には、nil?メソッドを使うか、falseを左演算子とする "==" 演算子を使う

1-2. オブジェクトを扱うときにはnilかもしれないということを忘れないようにしよう

  • Rubyの型システムの構造上、全てのオブジェクトがnilになり得る
  • nil?メソッドは、レシーバがnilならtrue、そうでなければfalseを返す
  • 適切なら、to_s、to_iなどの変数メソッドを使ってnilオブジェクトを強制的に型変換しよう。
  • Array#compactメソッドは、レシーバのコピーから全てのnil要素を取り除いた形のものを返す。

1-3. Rubyの暗号めいたPerl風機能を避けよう

  • String#=~ではなく、String#matchを使う。String#matchなら、複数の特殊グローバル変数ではなく、MatchDataオブジェクトに全てのマッチ情報を返す。
  • 短い暗号めいた名前のグローバル変数ではなく、長くて意味のわかる別名の方を使う(例えば、$: ではなく、 $LOAD_PATH)。ただし、ほとんどの長い名前は、Englishライブラリをロードしなければ使えない
  • 暗黙のうちに$_グローバル変数を読み書きするメソッドを使うのを避けよう(たとえば、Kernel#print、Regexp#~など)。

1-4. 定数がミュータブルなことに注意しよう

  • 定数は書き換えられないようにするために必ずフリーズしよう。
  • 定数が配列やハッシュなどのコレクションオブジェクトを参照する場合、コレクションとその要素をフリーズしよう。
  • 既存の定数に新しい値が代入されるのを防ぐためには、定数が定義されているモジュールをフリーズしよう。

1-5. 実行時の警告に注意しよう