讃岐小僧のEngineering×Techメモ

未経験から挑戦中のプログラミングや、趣味の野球や狩猟について、その他、ビジネスやテクノロジーをテーマに様々なことをつぶやく場所です。

【Rails】Viewのリファクタリング2

リファクタリングとは

リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。

wiki~リファクタリング

なんのためにやるのか(小僧主観)

  • 他の人が見てもわかりやすくするため(見通しをよくする)
  • コードを再利用できるようにするため

Railにおける具体的なリファクタリング(View)

下記、Viewに同じような処理が複数あったとする。

<% if user_signed_in? %>
  <% if current_user == @article.user %>
    <%= link_to "編集", edit_article_path(@article) %>
  <% end %>
<% end %>
<% if user_signed_in? %>
  <% if current_user == @comment.user %>
    <%= link_to "編集", edit_comment_path(@comment) %>
  <% end %>
<% end %>

繰り返しているのは、ユーザーがサインインしているかどうかを確認すること、インスタンスに紐づいたユーザIDがログインしているユーザIDと同じかどうか確認すること、

こちらを、下記のようにリファクタリングする。

helper/application_helper.rb ← これを編集

def current_user_has?(instance)
  user_signed_in? && current_user == instance.user
end
<% if current_user_has?(@book) %>
   <%= link_to "編集", edit_article_path(@book) %>
<% end %>
<% if current_user_has?(@comment) %>
   <%= link_to "編集", edit_comment_path(@comment) %>
<% end %>

なんか説明をみながらスッキリしたのでこちらもメモしておいた。