プログラミングスクールのフィヨルドブートキャンプの提出物のレビューでよく指摘するシリーズ。
独自の構造や単語を考える前に、組み込みライブラリ・標準添付ライブラリでよく使われている構造や単語(クラス名・メソッド名)で表現できないか考えよう。
独自の構造・単語は作っている人にとってはわかりやすいかもしれないが、それを使う他人にとってはわかりづらい。rubyプログラマーにおなじみの構造・単語でなるべく作ろう。
Bad:
class Status
def self.make_stat(file)
{
username: self.username(file),
size: self.size(file),
basename: File.basename(file)
}
end
def self.username(file)
# ...
end
def self.size(file)
# ...
end
end
puts Status.make_stat(file) # => {username => 'komagata', :size => 1234, basename: 'ls.rb'}
Good:
class Status
def initialize(file)
@file = file
end
def to_h
{
username: username,
size: size,
basename: File.basename(@file)
}
end
def username
# ...
end
def size
# ...
end
end
puts Status.new(file).to_h # => {username => 'komagata', :size => 1234, basename: 'ls.rb'}