Forkwell
2015/12/10 13:50:31 投稿
0

【Refactor Me】ひとつのメソッドに詰め込み過ぎ

<p>リファクタリングのネタが思いつかない方のために、beforeコードを用意しました。<br><br> このbeforeコードをリファクタリングしてくれた方にも <img alt="sushi" src="/assets/emoji/unicode/1f363-831097849a370c02369283b17255c6e4f0ffe9e0a1269610119e49b26401f621.png" style="vertical-align:middle" width="20" height="20" /> のチャンスがあります! </p> <p>beforeコードをコピーして新規投稿を作成してね! </p>

Before

class RequestToAnalyticsService
  def perform(data)
    account           = Account.find(data[:account_id)
    analytics_client  = Analytics::Client.new(Settings.analytics_api_key])

    account_attributes = {
      account_id:         account.id,
      account_name:       account.name,
      account_user_count: account.users.count
    }

    account.users.each do |user|
      analytics_client.request({
        type:  data[:type],
        id:    user.id,
        email: user.email
      }.merge(account_attributes))
    end
  rescue e
    raise ConnectionFailureException.new(e.message)
  end
end

RequestToAnalyticsService.new.perform(args)

After

# your cool code

みんなのコメント

withdrawn_user_1066
withdrawn_user_1066
2015/12/12 11:47:22 投稿
<pre><code>- account = Account.find(data[:account_id) - analytics_client = Analytics::Client.new(Settings.analytics_api_key]) + account = Account.find(data[:account_id]) + analytics_client = Analytics::Client.new(Settings.analytics_api_key) </code></pre>
sue445
sue445
2015/12/23 22:44:02 投稿
<pre><code class="diff">- rescue e + rescue =&gt; e </code></pre>