Effective Ruby 第一章まとめ
最近仕事でJava、趣味でElixirを書いてるのですが、来週くらいから仕事でRuby書くっぽいのでRubyの復習を始めつつブログのネタにします。というわけでEffective Rubyを読み始めました。初見です。
- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
備忘録がてら第一章で扱われている内容について簡単に。
Rubyの真偽値
比較時にfalseを右辺に書くと左辺のObjectの挙動に引っ張られるので危険らしいです。
Rubyのnilの扱い
nil.to_i * 2 #=> 0 nil.to_s.length #=> 0 nil.length #=> error!
ただ、nilとかemptyのチェックは実際Active Supportのメソッド使うことが多そうな印象です。
Perlっぽい機能を避ける
=~
演算子とか使わずString#match
使う$:
じゃなくて$LOAD_PATH
を使う- 特殊なグローバル変数はワンライナー以外で使っちゃダメ
- 特殊なグローバル変数使いたかったら
English
モジュールで可読性を高める
"特殊なグローバル変数"、正しい日本語名が分からない。 ちょっと自信ないですが英語だとSpecial variablesでヒットします。
定数がImmutableでない
- 普通に定数書き換え可能
- Object#freezeしよう
- コレクションのfreezeは要素までfreezeする
AAA = ["foo", "bar"].freeze # NG BBB = ["foo", "bar"].map(&:freeze).freeze #OK
- 定数はモジュールにまとめてfreezeする
module Hoge CCC = 1 end Hoge.freeze
Objectの参照考えるのちょっとめんどくさいですよね。 ところでElixirのコレクションは完璧にImmutableなので分かりやすいですよ!
Warningを出す
RUBYOPT='-w' export RUBYOPT
- 実行時のWarningは
$VERBOSE
変数にtrue|false|nil
のいずれかを指定する
基本Rubocop
使いながら開発するはずなのでコンパイル時警告はあまり気にならないかも