我有一個外觀和功能同樣在這兩種情況下,無論是代碼:我應該使用什麼來共享功能,模塊或類?
class Bar
def baz
puts 3
end
end
class Foo < Bar
end
Foo.new.baz
#=> 3
或:
module Bar
def baz
puts 3
end
end
class Foo
include Bar
end
Foo.new.baz
#=> 3
我應該更喜歡設計由多個模型共享功能時使用?
問問自己'Foo'真的*是一個'Baz'。如果是這樣,繼承可能沒問題。一般來說,你應該贊成[繼承繼承](https://en.wikipedia.org/wiki/Composition_over_inheritance)並選擇模塊方法。 – GolfWolf
@ w0lf這是有道理的,我只是想明白這一點[在設計多個模型共享的功能時首選模塊。](https://github.com/thoughtbot/guides/tree/master/best-practices #ruby) –
*在設計由多個模型共享的功能時,首選模塊類。*不代表模塊繼承。這意味着:如果您的模型具有複雜的邏輯,則最好將該邏輯單獨放入類中。男人的原因是,更容易孤立地測試一個類,然後測試包含在多個類中的相同模塊。 – spickermann