У меня есть этот метод:Используя условие охранника блока кода
def self.get_image(product_id)
self.initialize
product_id=product_id.to_s
if @image_db.key?(product_id)
if Time.now.to_i - @image_db[product_id][':cached_at'] > @refresh_period
puts Time.now.to_i - @image_db[product_id][':cached_at']
self.cache_image(product_id)
else
return @image_db[product_id][':uri']
end
else
self.cache_image(product_id)
end
end
и я получаю ошибки rubocop использовать пункт охраны, а не в if
- else
заявления. Какой был бы лучший способ сделать это?
Я обдумывал этот код:
def self.get_image(product_id)
self.initialize
product_id=product_id.to_s
return if @image_db.key?(product_id)
return if Time.now.to_i - @image_db[product_id][':cached_at'] > @refresh_period
puts Time.now.to_i - @image_db[product_id][':cached_at']
self.cache_image(product_id)
end
, но эта линия никогда не будет называться:
return @image_db[product_id][':uri']
Спасибо Вам Андрей за это, был поучителен , Для кого-либо, кто нуждается в помощи с предложениями охраны, вместе с ответом Андрея, я нашел эти ссылки, которые очень помогли мне: http://www.thechrisoshow.com/2009/02/16/using-guard- в статьях-в-вашем-ruby-code/ http://stackoverflow.com/questions/31943125/how-to-correctly-use-guard-clause-in-ruby http://www.rubydoc.info/GitHub/bbatsov/rubocop/Rubocop/Cop/Стиль/GuardClause – snowflakekiller