为了一句话的好看,后面需要付出很多代价。现在是一个 rails 项目。model 有 user, idea,favorites:
Favorites.favorite user, idea
不好看。改成:
user.favorite idea
但是后面的代价是 user.rb 里面要有include AsFavoriter
,然后加上一个as_favoriter.rb
。
为了一行代码好看,把代码写得到处都是,是否值得呢?
Edit:又发现一种写法 (没有跑过):
class User
def method_missing name, *args
if name =~ /op_(.+)$/
args.unshift self
name.camelize.constantize.operate *args
else
super
end
end
end
class Favorite
def self.operate user, item
..
end
end
user.op_favorite idea