Quand j'ai lu plus sur la métaprogrammation Ruby, la plupart du temps nous avons trouvé au moins deux solutions pour résoudre un problème. S'il vous plaît consulter deux exemples ci-dessous:Class vs Module dans la conception de Ruby API?
class Base
def self.has_many(*args)
# ...
end
end
class Student < Base
has_many :books
end
Un autre style:
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
Mais quand nous concevons api, nous devons décider lequel utiliser, mais je voudrais demander à vos idées et quelques-uns les meilleures pratiques que la plupart des gens ont déjà mises en œuvre dans leurs bibliothèques.