Rails tips: Service Objectパターンでリファクタリング(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Use service object pattern to make refactoring of your Ruby on Rails app 原文公開日: 2018/02/03 著者: Paweł Dąbrowsk Rails tips: Service Objectパターンでリファクタリング(翻訳) このリファクタリングパターンは非常にシンプルですが、私が作業しているどのアプリでも非常に有効であることがわかってきました。Service Object(訳注: 単にServiceと書かれることもありますが、本記事では略さない方に統一しています)パターンは、クラスやメソッドのコード量が増えてしまったときにいつでも使えます。私はServiceを作るときは以下のルールを守るようにしています。 Service Objectのクラス名の末尾には必ずServiceを付ける 単一責任の原則を守る(この原則はService Objectに限らない一般的なルールです) Service Objectのアイデアをわかりやすく示すために、サンプルのService Objectクラスを作ってみましょう。 module Users class EmailDomainService def initialize(user) @user = user end def email_domain user.email.split(“@”).last if user.email.present? end private attr_reader :user end end このクラスは非常にシンプルでありながら、きわめて便利です。Service Objectのクラス内のコード量は抑えておくべきです。Service Objectはささやかなサービスだけを、一度に1つだけ提供すべきだからです。 このパターンは、巨大なクラスを小さなコード片に分解してサービスを分離するリファクタリングに使えます。 RSpec & TDDの電子書籍を無料でダウンロード もっと稼ぎたい方や会社をさらに発展させたい方へ: テスティングのスキルの重要性にお気づきでしょうか?テストを正しく書き始めることが、唯一のファーストステップです。無料でダウンロードいただける私の書籍『RSpec & Test Driven Developmentの無料ebook』をどうぞお役立てください。 関連記事 Railsで重要なパターンpart 1: Service Object(翻訳) Rails: Service Objectはもっと使われてもいい(翻訳)