Skip to content

Conversation

@esyugcha
Copy link
Owner

Principios SOLID violados

Liskov Substitution Principle

En la clase Trail que extiende de la clase GameObject vemos que el método getBounds lo deja con un return null, esto viola el principio Liskov ya que este indica que cualquier clase hija puede sustituir al padre y el programa debe seguir funcionando, por lo tanto, si sobreescribimos un método que no hace nada como es el caso, incumple Liskov.

Dependency inversion principle

La clase Game depende de otras clases de bajo nivel como Handler y HUD, el principio de inversión de dependencia indica que las clases de alto nivel no deberían depender de clases de bajo nivel, si no que ambas deben depender de abstracciones, por lo tanto, se está violando este principio.

Single responsibility principle

Insertando imagen...

En la clase Game el método tick y render son métodos que no tienen nada que ver con esta clase, ya que aquí se está inicializando los métodos tick (handler, hub y sawner) y render (handler y hub) de otras clases.

Propuestas de solución

Liskov Substitution Principle

Para solucionar el problema se creó otra clase abstracta que se lleve la clase que no era usada por el Trail, de esta forma solo las clases que necesiten del método getBounds van a extender de esa, mientras que Trail como no la necesita, solo extiende de GameObject.

Dependency inversion principle

Para solucionar la dependencia que existía en Game se ha procedido a crear interfaces que contengan los métodos necesarios que hagan que esta dependencia se rompa, de esta forma la clase Game queda de forma independiente.

Single responsibility principle

Se ha divido en dos clases Game para cumplir el principio de única responsabilidad los métodos que no pertenecían en esta clase se lo alojo en la clase GameInicializar, de esta forma se logra cumplir que cada clase tiene una responsabilidad diferente.

Se ha detectado diversos problemas en tu código que violan el principio SOLID, se ha detectado 3 principios violados: Liskov Substitution Principle, Dependency inversion principle.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants