重构 代码 review 时的一个小问题

johnwhm · 2014年09月12日 · 最后由 johnwhm 回复于 2014年09月12日 · 6736 次阅读

今天在修改项目 model 中几个不好的方法,由于它们的调用比较多,所以定义了一个 methods_deprecate 的类方法,用来分发旧的方法,定义的方式如下:

def self.methods_deprecate(old_method, new_method)
  define_method(old_method) do |*args, &block|
    send(new_method, *args.unshift(old_method), &block) 
  end
end

eg:

methods_deprecate :old_m,:new_m
def new_m(*args)
  puts args
end

执行->class_name.new.old_m 'aaa' 打印出:

old_m
aaa

上面是对实例方法的处理,运行起来还 ok,如果把 new_m 改成类方法,结果就很不理想了,我的 methods_deprecate 如何写才能实现能够处理 old_m 和 new_m 都为类方法;old_m 和 new_m 之一为类方法这三种情况呢? 求指教啊

怎么没人回啊?

增加不必要复杂性。要改就直接改好了,这么改越改越复杂,越难维护。

#2 楼 @billy 我现在是有需要这样做

需要 登录 后方可回复, 如果你还没有账号请 注册新账号