General

Power Types es una gema desarrollada por Platanus que promueve el uso de estos poderosos patrones: Services, Commands, Utils y Values.

Estos se basan en el SRP (Single Responsability Principe), que nos dice que cada clase debe tener 1 sola función. Por ejemplo, si tenemos un modelo con operaciones complejas como este:

class User
  def upgrade_membership
    # ...
  end

  def notify_external_system
    # ...
  end

  def register_payment_card
    # ...
  end
end

Deberíamos llevar cada una de sus funciones a Commands o Services independientes:

class UpgradeMembership < Command
  # ...
end

class ExternalNotifierService < Service
  # ...
end

class RegisterPaymentCard < Command
  # ...
end

Estructurando nuestro código de forma modular y desacoplada tenemos las siguientes ventajas:

  • Menos riesgo: Aislar errores, no pisar variables

  • Más claridad, que hace cada clase

  • DRYness

  • Unit Testing de cada funcionalidad

Referencias

Para mayor información sobre esta gema, visita los siguientes vínculos:

Última actualización