提取方法以获取Feed:提高代码清晰性和可维护性的实践
1. 引言
在编写代码时,我们常常会遇到一些复杂的方法,这些方法集成了多个功能,导致代码难以理解和维护。为了改善这种情况,我们可以通过提取方法来分离关注点,从而提高代码的清晰性和可维护性。本文将通过一个具体的例子,展示如何从现有代码中提取一个专门用于获取Feed(订阅源)的方法。
2. 问题背景
假设我们有一个方法 discover
,它负责从给定的URL中发现并解析Feed。最初的实现可能如下所示:
def discover(url, finder = Feedbag, parser = Feedzirra::Feed)
begin
feed = parser.fetch_and_parse(url)
feed.feed_url ||= url
return feed
rescue Exception => e
urls = finder.find(url)
return false if urls.empty?
begin
feed = parser.fetch_and_parse(urls.first)
feed.feed_url ||= urls.first
return feed
rescue Exception
return false
end
end
end
这段代码虽然实现了功能,但存在以下几个问题:
- 使用了嵌套的