Tôi đang nghĩ đến các phương pháp kiểm soát dòng chảy tốt nhất. Tôi nên đi con đường nào?Kiểm soát luồng Ruby: ném một ngoại lệ, trả về 0 hoặc để nó thất bại?
1) Không kiểm tra bất cứ điều gì và để cho các chương trình thất bại (mã sạch, thông báo lỗi tự nhiên):
def self.fetch(feed_id)
feed = Feed.find(feed_id)
feed.fetch
end
2) thất bại âm thầm bằng cách trả lại bằng không (tuy nhiên, "Mã sạch" nói, mà bạn không bao giờ phải trả lại null):
def self.fetch(feed_id)
return unless feed_id
feed = Feed.find(feed_id)
return unless feed
feed.fetch
end
3) ném ngoại lệ (vì nó đặc biệt không để tìm một thức ăn bằng id):
def self.fetch(feed_id)
raise ArgumentError.new unless feed_id
feed = Feed.find(feed_id)
raise ArgumentError.new unless feed
feed.fetch
end
Nói cách khác: tôi có nên sử dụng các điều kiện bảo vệ một cách tích cực, hay tốt hơn là dựa vào các phương thức Ruby/Rails và để chúng ném một ngoại lệ, nếu có điều gì xảy ra?
nếu ActiveRecord này, 'tìm' sẽ phát ra nếu' id' không tồn tại, 'find_by_id' không thổi. – tokland