Skip to content
This repository has been archived by the owner on Jul 22, 2020. It is now read-only.

Refactor variables de clase #10

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

apux
Copy link
Contributor

@apux apux commented Sep 9, 2015

@unRob
Fíjate que necesito leer la información del nodo de nómina cuando esté presente, pero esto me plantea varios problemas ya que si agrego una sección de nómina directamente en el comprobante, se modificaría el resultado de #to_h para todos los comprobantes, incluso los que no tienen el nodo nómina.

Una de las alternativas en las que pensé es una especialización de la clase Comprobante, y tener una clase ComprobanteNomina que herede de Comprobante e incluya los datos de la nómina únicamente en esa clase. Desafortunadamente, la presencia de las variables de clase @@datosCadena y @@data impiden que la herencia sea una opción viable porque afectan a ambas clases y cualquier modificación que les haga a esas variables en ComprobanteNomina también afecta a Comprobante y me deja en las mismas.

Para sortear ese problema y de paso librarnos de esas variables de clase que suelen ser un dolor de cabeza, empecé este refactor que en lugar de utilizar variables de clase, utiliza métodos (de instancia) para definir los mismos valores, con la ventaja de que los métodos sí pueden ser sobreescritos sin problemas en una subclase, e incluso heredar los atributos de la superclase.

Tendríamos, por ejemplo:

class ComprobanteNomina < Comprobante
  def atributos
    super + [:nomina]
  end
end

Para conseguir que se siguieran teniendo los accessors a las variables, utilicé el trucazo de crear un módulo anónimo e incluirlo a la clase Comprobante al momento de instanciar un objeto.

En el camino, aproveché para agregar algunas pruebas y corregir algunos detalles menores.

¿Cómo ves el PR? Si lo apruebas, se puede mezclar y ya sobre esto empiezo a agregar la funcionalidad de nómina.

Mediante las pruebas se detectó un funcionamiento erróneo que se
corrigió.
Refactor para limpiar un poco el código e incluir escenarios donde no se
tiene domicilio fiscal.
…tos.

En lugar de variables de instacia, se utilizan método de instancia y se
declaran los atributos mediante un módulo anónimo que se incluye en la
clase Comprobante.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant