Quando ho letto di più sulla metaprogrammazione di Ruby, la maggior parte delle volte abbiamo trovato almeno due soluzioni per risolvere un problema. Si prega di guardare due esempi di seguito:Class vs Module nella progettazione dell'API Ruby?
class Base
def self.has_many(*args)
# ...
end
end
class Student < Base
has_many :books
end
Un altro stile:
module Base
def self.included(klass)
klass.extend ClassMethods
end
module ClassMethods
def has_many(*args)
# ...
end
end
end
class Student
include Base
has_many :books
end
Ma quando progettiamo api, dobbiamo decidere quale usare, ma vorrei chiedere le vostre idee e alcune delle le migliori pratiche che molte persone hanno già implementato nelle loro librerie.