2013年11月10日日曜日

rubyコードの作法1

rubyのコードって、どうやったら綺麗に書けるんだろう?と誰しもが悩んだことがあるはずです。そういう事例をまとめて紹介していきたいと思います。

unlessの使いどころ

悪いコード
  companies = ["Google", "Yahoo"]
  if !companies.empty?
    puts "Hi"
  end
良いコード1。unlessで記述する。
  companies = ["Google", "Yahoo"]
  unless companies.empty?
    puts "Hi"
  end
良いコード2。一行で記述する。
  companies = ["Google", "Yahoo"]
  puts "Hi" unless companies.empty?


nilの判定

悪いコード
  company = "Amazon"
  companies = ["Google", "Yahoo"]
  if companies.find_index(company) != nil
    puts "There is"
  end
良いコード。nilでないはtrueという意味。
  company = "Amazon"
  companies = ["Google", "Yahoo"]
  if companies.find_index(company)
    puts "There is"
  end

&&を上手に使う

悪いコード
  company = "Amazon"
  companies = ["Google", "Yahoo"]
  if company
    if companies.find_index(company) != nil
      puts "There is"
    end
  end
良いコード
  company = "Amazon"
  companies = ["Google", "Yahoo"]
  if company  && companies.find_index(company)
      puts "There is"
  end

nilガード

悪いコード
  if a !=nil
    a = a
  else
    a = []
  end
良いコード
  a ||= []

ifで値を代入

悪いコード
  res = nil
  if search
    res = a
  else
    res = b
  end
良いコード
  res = nil
  res = if search
    res = a
  else
    res = b
  end

メソッドの最後の値が自動でreturnされる1

悪いコード
  def search_method
    res = nil
    res if search
      res = a
    else
      res = b
    end
    return res
  end
良いコード
  def search_method
    res = nil
    if search
      a
    else
      b
    end
  end

メソッドの最後の値が自動でreturnされる2

悪いコード
  def search_method
    company = "Amazon"
    companies = ["Google", "Yahoo"]
    search_index = companies.find_index(company)
    if search_index
      search_index
    else
      "Nothig"
    end
  end
良いコード
  def search_method
    company = "Amazon"
    companies = ["Google", "Yahoo"]
    search_index = companies.find_index(company) ||  "Nothig"
  end

0 件のコメント: