Upgrade to Pro — share decks privately, control downloads, hide ads and more …

保守性を悪くするレールズの書き方アンチパターン

 保守性を悪くするレールズの書き方アンチパターン

保守性についての基本的な考え方と具体例

shimada

June 08, 2016
Tweet

Other Decks in Programming

Transcript

  1. Ͳ͏͍͏ιʔείʔυ͕อकੑ͕ߴ͍͔  ม͍͑ͨݩͷಈ࡞͕Ͳ͜ͰߦΘΕ͍ͯΔ͔ௐ΂Δ ❖ ม͍͑ͨಈ࡞͕ߦΘΕ͍ͯΔ৔ॴΛௐ΂΍͍͢  Ͳ͏͍ͬͨ͡Βม͑ΒΕΔ͔ߟ͑Δ ❖ ಈ࡞ͷม͔͑ͨΛਪଌ͠΍͍͢ 

    ҙਤ௨ΓมΘΔ͔ௐ΂Δɾࢼͯ͠ΈΔ ❖ ಈ࡞ͷมԽΛࢼ͠΍͍͢  ͍͡Δ͜ͱͰผͷͱ͜ΖʹӨڹ͕ͳ͍͔ௐ΂Δɾࢼͯ͠ΈΔ ❖ ͋Δ෦෼ͷมߋ͕ผͷͱ͜ΖʹӨڹͮ͠Β͍
  2. class BadController < ActionController::Base before_action :get_service_objects, only: [:index, :show, :edit]

    def index end def show end def edit end private def get_service_objects @service = Service.find(params[:service_id]) @user = User.find(params[:user_id]) @items = Item.where(service_id: @service.id, user_id: @user.id) end end
  3. class BadController < ActionController::Base before_action :get_service_objects, only: [:index, :show, :edit]

    def index end def show end def edit end private def get_service_objects @service = Service.find(params[:service_id]) @user = User.find(params[:user_id]) @items = Item.where(service_id: @service.id, user_id: @user.id) end end HFUͰ͸ͳ͘TFU !ม਺Λ֎ͰՃ޻ ͦΕ͸ΞΫγϣϯͷલॲཧ͔ʁ ࣮ࡍͷॲཧ͸Ͳ͜ʹʁ
  4. class GoodController < ActionController::Base def index @service = get_service(params[:service_id]) @user

    = get_user(params[:user_id]) @items = get_items(params[:service_id], params[:user_id]) end def show @service = get_service(params[:service_id]) @user = get_user(params[:user_id]) @items = get_items(params[:service_id], params[:user_id]) end def edit @service = get_service(params[:service_id]) @user = get_user(params[:user_id]) @items = get_items(params[:service_id], params[:user_id]) end private def get_service(service_id) Service.find(service_id) end def get_use(user_id) User.find(user_id) end def get_items(service_id, user_id) Item.where(service_id, user_id) end end
  5. class GoodController < ActionController::Base def index @service = get_service(params[:service_id]) @user

    = get_user(params[:user_id]) @items = get_items(params[:service_id], params[:user_id]) end def show @service = get_service(params[:service_id]) @user = get_user(params[:user_id]) @items = get_items(params[:service_id], params[:user_id]) end def edit @service = get_service(params[:service_id]) @user = get_user(params[:user_id]) @items = get_items(params[:service_id], params[:user_id]) end private def get_service(service_id) Service.find(service_id) end def get_use(user_id) User.find(user_id) end def get_items(service_id, user_id) Item.where(service_id, user_id) end end ֎෦͔Βͷೖྗ͸͢΂ͯ ΞΫγϣϯ಺Ͱड͚औΔ Ϗϡʔʹ౉͢஋͸͢΂ͯ ΞΫγϣϯ಺Ͱઃఆ͢Δ