Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proyecto de Karen y Francisco #29

Open
15 tasks done
karendcl opened this issue Jul 16, 2022 · 1 comment
Open
15 tasks done

Proyecto de Karen y Francisco #29

karendcl opened this issue Jul 16, 2022 · 1 comment
Assignees
Labels
Aprobado Cuando se de la evaluación final por el colectivo de la asignatura

Comments

@karendcl
Copy link

karendcl commented Jul 16, 2022

Modifique las líneas siguientes con los detalles relevantes:

Equipo

  • C211, Karen Dianelis Cantero Lopez (@karendcl)
  • C212, Francisco Vicente Suarez Bellon (@FVSB)

Proyecto

Checklist

(Esta lista es para el mentor. Hasta que no estén chequeados estos elementos no se procederá a la evaluación en persona.)

Básicos

  • El repositorio indicado existe y tiene un Readme.md no vacío.
  • Los miembros del equipo tienen un usuario de Github válido.
  • El proyecto puede ser ejecutado siguiendo las instrucciones del Readme.md.
  • El reporte existe y tiene la longitud adecuada.

Funcionalidades

  • El proyecto permite configurar al menos 5 elementos relevantes de la mecánica del dominó.
  • El proyecto contiene 2 implementaciones diferentes de cada elemento configurable.
  • El proyecto permite personalizar las estrategias de los jugadores virtuales.
  • El proyecto contiene al menos 3 implementaciones diferentes de jugadores virtuales.

Ingeniería de Software

  • Las estrategias de jugadores virtuales pueden combinarse con cualquier configuración del juego de forma transparente.
  • La interfaz gráfica permite configurar el juego en toda la extensión que brinda la lógica.
  • Las jerarquías de clases y demás abstracciones existentes son adecuadas para modelar el dominio.
  • El código muestra una organización y estructura mantenible y extensible, respetando las buenas prácticas de la ingeniería de software.

Documentación

  • El reporte técnico explica de forma suficientemente detallada los pormenores del proyecto.
  • Los nombres de clases, métodos y variables son descriptivos.
  • Los comentarios son legibles y útiles para entender el funcionamiento del código.

Revisión

Fecha prevista: 2020/XX/XX

Comentarios

(Para rellenar por el mentor)

@lead8000
Copy link
Member

Consideraciones

El reporte técnico tiene una buena descripción de las abstracciones del proyecto, pero no habla de las implementaciones concretas de la jerarquía de clases que se utilizó para modelar el problema planteado.

A medida que un proyecto va creciendo, van naciendo nuevos conceptos y surgiendo la necesidad de desacoplar algunos conceptos antes creados. Cuando se llega a este punto, es hora de refactorizar.

Les haré algunos señalamientos y preguntas que me fueron surgiendo para que entiendan porque pienso que su proyecto está en este punto (no tienen que responder las preguntas, con responderselas uds mismos basta):

  • Cuando aumenta considerablemente el código de nuestro proyecto, las probabilidades de incumplir el principio DRY aumentan también. Les citaré algunos ejemplos para que vean de que les estoy hablando.
    • Las clases NormalInt y EnergyGenerator, que ambas implementan de ITokenizable, y tienen las mismas implementaciones de ToString() y Equals(). En estos casos la respuesta no es inmediata, deben valorar si de la forma que tienen concevida la interface, estas implementaciones variarán tanto.
    • El método IsMatch() de la clase Token y el método Equals() de la clase IEquatablePorCaras tienen la misma funcionalidad (esta última no logra el objetivo querido, tiene un pequeño error).
  • De la clase Championship:
    • La función ControlPlayers() está mal implementada.
    • La función PrintGames() que uso se le da?
    • La función GameOver() para que le pasan el 3er parámetro?
    • Por qué los eventos son públicos? Esto no atenta contra el uso correcto de la ejecución de un torneo?
  • Muchas de las variables y funciones implementadas tienen nombres y comentarios apropiados, pero se quedaron algunas partes del código débiles en este sentido. Un ejemplo de ello es la clase ChampionStart que no tiene un nombre que se asemeje con la funcionalidad de la clase, y su función ValidSetting() además de no tener un nombre muy descriptivo no está documentada.

En resumen, es llegó la hora de refactorizar. A continuación les dejo el error que me sale al ejecutar su proyecto.

$ dotnet run
/usr/share/dotnet/sdk/6.0.108/Microsoft.Common.CurrentVersion.targets(2068,5): warning : The referenced project '../code/Code.csproj' does not exist. [/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Tester.csproj]
/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Program.cs(12,9): error CS0246: The type or namespace name 'Events' could not be found (are you missing a using directive or an assembly reference?) [/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Tester.csproj]
/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Program.cs(12,29): error CS0246: The type or namespace name 'Events' could not be found (are you missing a using directive or an assembly reference?) [/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Tester.csproj]
/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Program.cs(13,9): error CS0246: The type or namespace name 'observador' could not be found (are you missing a using directive or an assembly reference?) [/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Tester.csproj]
/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Program.cs(13,30): error CS0246: The type or namespace name 'observador' could not be found (are you missing a using directive or an assembly reference?) [/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Tester.csproj]
/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Program.cs(14,9): error CS0246: The type or namespace name 'ChampionStart' could not be found (are you missing a using directive or an assembly reference?) [/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Tester.csproj]
/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Program.cs(14,35): error CS0246: The type or namespace name 'ChampionStart' could not be found (are you missing a using directive or an assembly reference?) [/home/leandro/Study/1st_Programming/Domino_projects/Paco_Karen/Tester/Tester.csproj]

The build failed. Fix the build errors and run again.

@lead8000 lead8000 added Listo para exponer Cuando estén todos los checkbox marcados y la fecha de exposición esté conveniada Listo para evaluar Cuando se haya hecho la exposición y el mentor haya dado las conclusiones finales en el issue and removed Listo para exponer Cuando estén todos los checkbox marcados y la fecha de exposición esté conveniada labels Sep 8, 2022
@lead8000 lead8000 added Aprobado Cuando se de la evaluación final por el colectivo de la asignatura and removed Listo para evaluar Cuando se haya hecho la exposición y el mentor haya dado las conclusiones finales en el issue labels Oct 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Aprobado Cuando se de la evaluación final por el colectivo de la asignatura
Projects
None yet
Development

No branches or pull requests

3 participants