Ruby

Rubyのコードレビューで軽く突っ込んだところ

More than 5 years have passed since last update.


Enumerable#findを使う


before

def find_something

ret = nil
Foo.each do |item|
if item.this_is_it?
ret = item
break
end
end
ret
end


after

def find_something

Foo.find{|item| item.this_is_it?}
end


Orを活用する


before

def find_or_create info

ret = find_something(info.id)
ret = create_something(info) if ret.nil?
ret
end


after

def find_or_create info

find_something(info.id) || create_something(info)
end


文字列結合をmap+joinで


before

str = ""

Items.each do |item|
str += "#{item.key}='#{item.val}'"
end


after

str = Items.map do |item|

"#{item.key}='#{item.val}'"
end.join


メソッド呼ぶだけのイテレーションは&で


before

%w(1 0 2 5 0 2).map{|v| v.to_i}.select{|v| v>0}



after

%w(1 0 2 5 0 2).map(&:to_i).select(&:nonzero?)


nonzeroと「0より大きい」は等価でないけど。


配列から除外はrejectでも可


before

%w(1 0 2 5 0 2).map(&:to_i).select(&:nonzero?)



after

%w(1 0 2 5 0 2).map(&:to_i).reject(&:zero?)