DRY ~Don't Repeat Yourself~
今回は前回の記事で紹介したRuby on Railsの理念に関する内容を深ぼっていきます。
DRYとは実際にどの様な場面で用いられているのか...
[Don't Repeat Yourselfの略]
「同じ情報を繰り返し定義しない」
ここでいう情報
とは、
メソッド
であったり、配列などのデータの集合体
などを指します。
同じコードを繰り返し記述しないという捉え方で問題ないようだ。
具体例
上記の内容を見た時にすぐに浮かんだのはcontrollerの中のこの記述
items_controller.rb
def create
@item = Item.new(item_params)
if @item.save
redirect_to root_path
else
render :new
end
end
def show
end
def edit
end
# ~省略~
private # ここだよー
def item_params
params.require(:item).permit(:image, :product_name, :product_description, :product_price, :product_category_id,
:product_condition_id, :delivery_charge_id, :prefecture_id, :days_to_ship_id).merge(user_id: current_user.id)
end
def set_item
@item = Item.find(params[:id])
end
着目したいのはprivateメソッド
このprivateメソッドとても優秀
privateメソッド
privateメソッドを使用する利点は以下の2点
-
Classの外部から呼ばれたら困るメソッドを隔離
- メソッドの中には、Classの外部から呼び出されてしまうとエラーを起こすメソッドも存在する。
- プライベートメソッドはClass外から呼び出すことが不可能であるため、誤って呼び出してしまう等によるエラーを事前に防ぐことが可能となる。
privateメソッドと呼ばれる由縁なのかな?なんだか独りで納得。
-
可読性
- Classの外部から呼び出されるメソッドを探す際に、private以下の部分は目を通さなくて良くなる。
- 繰り返し使用するメソッドもprivate以下に集約でるので、コードがシンプルになる。
item_params
とset_item
として切り出したのがまさにソレ!
恩恵を受けた部分
def show
end
def edit
end
上記の部分なんておかげで何も書いていない。
今後大きなアプリケーションを作成する際に、このありがたみがわかるでしょう。
こんな事を学習開始当初
目にしていましたが、本当に助かってます。
当時は何もピンときてなかったけどね