短く書こう

railsプラグイン書いててふと思いました。

def add_class_name(options, class_name)
  if options
    options.stringify_keys!
    if options['class']
      options['class'] = "#{options['class']} #{class_name}"
    else
      options['class'] = class_name
    end
    options
  else
    {'class' => class_name}
  end
end

なんにも考えずここまで書いて、自分ダメだと思って書きなおしました。

def add_class_name(options, class_name)
  options ||= {}
  options.stringify_keys!
  options['class'] ||= ''
  options['class'] << ' ' << class_name
  options
end

メソッド内11行が5行になりました。

さらに短く

def add_class_name(options, class_name)
  (options ||= {}).stringify_keys!
  (options['class'] ||= '') << ' ' << class_name
  options
end

11行 -> 5行 -> 3行となりました。僕はこっちの方が読みやすいけど、一般的にどうでしょう?これはちょっとやりすぎって言われるような気も。まあ、こういうのを採用するかどうかはそのチーム次第って感じがします。