写这个更好的方法是什么?

时间:2014-08-22 07:46:08

标签: ruby-on-rails ruby ruby-on-rails-4

def useable?
    if !self.value.nil? and self.active and !self.used?
        unless self.starts.nil?
            if self.starts > Time.now
                return false
            end
        end
        unless self.ends.nil?
            if self.ends < Time.now
                return false
            end
        end
        return true
    end
    return false
end

我对Ruby和Rails很陌生,并且觉得这块代码可以编写得更好,但是对于我来说,我无法想出一些有用的东西。

3 个答案:

答案 0 :(得分:3)

这个问题更适合CodeReview,但是你走了。

def useable?
  return false unless value && active && !used?
  return false if starts && starts > Time.now
  return false if ends && ends < Time.now

  true
end

提示:您不需要将self与读者方法一起使用。

答案 1 :(得分:2)

def useable?
  return false if value.nil? or active.! or used?
  return starts <= Time.now unless starts.nil?
  return ends >= Time.now unless ends.nil?
  return true
end

答案 2 :(得分:0)

我想也许这就是你想要的。

def useable?
    if starts and ends and value and active and used
        return false if starts > Time.now or ends < Time.now
        return true
    else
        return false
    end
end

一些建议:

(1)!self.value.nil? ==等于==&gt; self.value

(2)减少代码行

if self.ends < Time.now
   return false
end

等于:

return false if self.ends < Time.now