嗨,我有一個代碼,我想重構如何重構ruby代碼?
def gear_type
@gear_type ||= self.class.gear_types.find{|gears| gears["id"]==source["gear_type_id"]}["text"] if source["gear_type_id"]
end
def brand
@brand ||= self.class.brands.find{|node| node["id"]==source["brand_id"].to_s}["text"] if source['brand_id']
end
什麼是最好的辦法嗎?使用eval還是定義方法?我已經嘗試過這一點,但也有一些錯誤,我不能發現尚未:
%w(gear_type brand).each do |meth|
define_method(meth){
instance_variable_get("@#{meth}") rescue
instance_variable_set("@#{meth}", self.class.send(meth.pluralize).find{|node| node["id"]==source["#{meth}_id"]}["text"]) if source["#{meth}_id"]
}
end
代碼審查/重構現在在http://codereview.stackexchange.com –