在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