55502f40dc8b7c769880b10874abc9d0

Hey Friends need to optimize this code... How can we reduce the number of lines ?

def set_teams_members
if params[:fee][:number_of_teams].blank? 
      number_of_teams = params[:teams]
    else
      if Fee::ITEMS.include?(params[:_fee][:teams])
        teams = nil
      else
        teams = params[:fee][:teams]
      end
    end
    if params[:fee][:members].blank? 
      members = params[:members]
    else
      if MembershipFee::ITEMS.include?(params[:fee][:members])
        members = nil
      else
        members = params[:fee][:members]
      end
    end
    params[:fee].merge!({:members => members,
                                   :teams => teams})
end

Refactorings

No refactoring yet !

4d72203c38dd5f3e3d2d446b5888e8a7

Elij

January 30, 2009, January 30, 2009 13:44, permalink

No rating. Login to rate!

rationalise your object model for teams and members and this'll work

def set_teams_members
	members = get_components(Fees::ITEMS, params[:fee][:teams], params[:teams])
	teams = get_components(MembershipFee::ITEMS, params[:fee][:members], params[:members])

	params[:fee].merge!({ :members => members,
				:teams => teams })

end


def getComponents(items, fee_components, components)
	if fee_components.blank?
		return components
	end

	if items.include?(fee_components)
		return nil
	else
		return fee_components
	end
	
end
D7a31f22c11776898826f7c1ed0ff80a

mischamolhoek.myopenid.com

January 30, 2009, January 30, 2009 15:08, permalink

No rating. Login to rate!

ternary cleans it up a bit

def set_teams_members
    if params[:fee][:number_of_teams].blank? 
        number_of_teams = params[:teams]
    else
        teams = Fee::ITEMS.include?(params[:_fee][:teams])? nil : params[:fee][:teams]
    end 
    if params[:fee][:members].blank? 
        members = params[:members]
    else
        members = MembershipFee::ITEMS.include?(params[:fee][:members]) ? nil : params[:fee][:members]
    end 
    params[:fee].merge!({:members => members, :teams => teams})
end
A8d3f35baafdaea851914b17dae9e1fc

Adam

January 30, 2009, January 30, 2009 18:00, permalink

No rating. Login to rate!

I think you need to rethink what you are doing entirely, but based on what information you have made available:

def set_team_members
  params[:fee][:teams] = params[:fee][:number_of_teams] unless params[:number_of_teams].blank?
  params[:fee][:teams] = params[:teams] unless params[:teams].blank?
  params[:fee][:members] = params[:members] unless params[:members].blank?
  
  params[:fee][:teams] = nil if Fee::ITEMS.include?(params[:fee][:teams])
  params[:fee][:members] = nil if MembershipFee::ITEMS.include?(params[:fee][:members])

  params[:fee]
end
55502f40dc8b7c769880b10874abc9d0

pypiyush.myopenid.com

January 31, 2009, January 31, 2009 11:23, permalink

No rating. Login to rate!

Thanks..Guys.... Thanks a lot for Your contribution...

Your refactoring





Format Copy from initial code

or Cancel