Одним из преимуществ является передача цели между кодом (и исходным автором) и теми, кто рассуждает о коде позже.(И механизм разрешения параметров.)
acts_as_csv
утверждает аспект поведения RubyCsv
.
include ActsAsCsv
менее декларативен.Предоставляет ли он дополнительные методы, фундаментально ли он изменяет функциональность базового класса, или оба, или ...?Вы не узнаете, пока не прочитаете документы.Вы можете не знать, пока не прочитаете документы для acts_as_csv
, но это более коммуникативно.
В этом разница между «это то, что я есть» и «это то, что я могу делать».Не увлекайтесь конкретным примером - рассмотрите механизм того, что делается, и как.
Этот механизм - одна из причин, по которой код Ruby может выглядеть как проблема, которую он пытается решить, а не просто Ruby.Это один из способов реализации микро-DSL, которые помогают сделать Ruby таким же выразительным, как и он.