Rails tips: Explaining Variableパターンによるリファクタリング(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

Rails tips: Explaining Variableパターンによるリファクタリング(翻訳)

ロジックの変数化リファクタリング(Explaining variable refactoring)とは、読んで字のごとく、複雑な式のロジックを、意味のある名前を持つ一時変数に移し替えることです。

このようにリファクタリングすることでコードがシンプルで読みやすく、かつ意味が明確になります。このリファクタリングの真の意図をご理解いただくために、以下のような複雑なif条件を考えてみましょう。

if(user.sign_in_count > 0 && user.posts.any? && (company.employees.size > 100 || company.mode == :maintenance)
  # 何かする
end

ここで使われている条件をすべて把握するには、しばし目を凝らす必要があるでしょう。これら条件のひとつひとつを、次のように動作をわかりやすく説明する変数に置き換えることでシンプルにできます。

user_signed_in = user.sign_in_count > 0
user_has_posts = user.posts.any?
large_company = company.employees.size > 100
company_in_maintenance = company.mode == :maintenance

if(user_signed_in && user_has_posts && (large_company || company_in_maintenance)
  # 何かする
end

ロジックを別のメソッドにすることも可能です。こうすることで読みやすく、コードが自ら語るようになるとは思いませんか?条件文を読むときにコードの作者の意図で迷うことがなくなります。


Railsでお困りの方にお知らせ

知りたいことがありましたら、twitter または連絡用フォームにてお気軽にお問い合わせください。

RSpec & TDDの電子書籍を無料でダウンロード

もっと稼ぎたい方や会社をさらに発展させたい方へ: テスティングのスキルの重要性にお気づきでしょうか?テストを正しく書き始めることが、唯一のファーストステップです。無料でダウンロードいただける私の書籍『RSpec & Test Driven Developmentの無料ebook』をどうぞお役立てください。

関連記事

[Ruby/Rails] 例外で深くなったネストをGuard Clauseですっきりさせる

Rails tips: belongs_to関連付けをリファクタリングしてDRYにする(翻訳)

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ