在Ruby中传递一个类或字符串化的类名是否更好?传递一个类或字符串化的类名?
例如,我有一个解析器/构建器,可以确定解析记录的类的类型。我将其传递给一个进口商类,但我可以将该类的名称作为字符串或常量传递。有没有理由不这样做?
x = ParsedRecord.new(value: 1, type: MyClass)
VS
x = ParsedRecord.new(value: 2, type: 'MyClass')
与进口商要么:
x.type.new
VS
x.type.constantize.new
薪火类似乎更容易但我不看到它很多(即。 Rails使您可以将关联的类名称串联起来)。也许它与加载顺序/自动加载有关?
不仅可以将其添加开销,但将限定类的名称,如'富::酒吧:: Class'成类对象,从程序中的任何一点需要一些技巧(虽然不冗长)的代码,它实际上并没有作为一个单一的方法构建到ruby中(至少不是1.9.3版,后面还不确定)。如果你没有理由必须这样做,我最好同意传递Class对象本身。 (有些人会说,如果你根据字符串名称或引用传递类而不是实例,那么这是OO/DI设计出现_potential_ poor的标志。 – jrochkind 2015-02-24 14:39:14