franciscogazitua / IIC2113-2024

Consultas sobre el proyecto en las Issues
4 stars 0 forks source link

Crear funciones en _view #25

Open Vicho1950 opened 6 months ago

Vicho1950 commented 6 months ago

Si quiero que View maneje los outputs, ¿sería mala práctica si le paso 4 atributos a una función? Por ejemplo la que dice quien tiene ventaja sobre quien, necesitamos el nombre y arma del atacante y el defensor. Siento que sería más sencillo solo pasarle el objeto entero de atacante y defensor pero View no tiene acceso a Character por lo que no podría acceder a attacker.Name o attacker.Weapon. ¿Hay una forma de que View pueda hacer esto o lo dejo con 4 argumentos?

RodrigoToroIcarte commented 6 months ago

Técnicamente, la forma más correcta sería que crees otro proyecto donde esté tu "modelo" de MVC. La vista sí tiene acceso al modelo y, por lo mismo, podría ver Character (pero el modelo no tiene acceso ni a la vista ni al controlador.)

Dicho eso, creo que en tu caso sería más fácil que definas una interfaz en la vista que tenga los métodos GetName() y GetWeapon(). Luego haces que tu objeto Character implemente esa interfaz. Así, tu método del _view puede recibir dos objetos que implementen tu interfaz. Serían solo dos argumentos en vez de cuatro. Dentro del método, podrás usar los métodos GetName() y GetWeapon(). Desde el lado del controlador, usar el método se vera "como si" le estuvieras dando al atacante y defensor.

En el siguiente ejemplo, uso básicamente ese mismo truco para disminuir la cantidad de parámetros que recibe un método (es del proyecto del año pasado, por eso habla de cartas):

Screenshot from 2024-04-15 20-42-50

Screenshot from 2024-04-15 20-43-11

Screenshot from 2024-04-15 20-43-17