acabo de leer algunas preguntas relacionadas que surgieron cuando me escribió el tema, así que voy a tratar de no repetir esos.C++, el diseño de clases y las responsabilidades
Recientemente he comenzado a revisar un proyecto de aprendizaje que comencé hace unos dos o tres años: un puerto C++ de un motor Mega Man. Sí, utilicé sprites rotos. También estoy usando una biblioteca de motor de juegos para dibujo, música y entrada.
Mi código original fue atroz. Si bien podría (pero apenas) llamarse OO, se olvidó por completo. Empecé a agregar cosas como interfaces y eliminé muchos códigos repetitivos. Hay algunas cosas de las que no estoy seguro, porque el diseño del juego se vuelve muy complejo a veces.
El objeto que representa mi biblioteca de juegos es actualmente global (sé que los globales suelen ser malos) porque muchos objetos pueden confiar en él aquí y allá para cosas como cargar su arte o música. ¿Cuál es la mejor manera de sacar ese objeto fuera del alcance global, sin tener que pasar cincuenta parámetros a todo lo que de otra manera lo usaría directamente?
Siguiente pregunta: Como todos sabemos, Mega Man dispara muchos pequeños proyectiles blancos. Actualmente, el objeto del jugador es responsable de los objetos de proyectiles que en los incendios, la actualización de su posición y tal (literalmente, llamando al método proyectil :: Update() una vez para cada disparo, dentro del método jugador :: Update()). ¿Es esta la manera incorrecta de hacerlo? Mi primera mejora fue hacer que todos estos objetos implementaran una interfaz DrawnObject, para que mi juego pueda dibujar todo. Hacer lo mismo para las Actualizaciones significaría tomar el control de los proyectiles lejos del Jugador y dárselos a algún objeto del Juego más amplio. La razón por la que dudo sobre esto es que se siente como el antipatón del objeto de Dios. ¿O estoy malinterpretando dicho antipatrón? Todavía hay una complejidad adicional involucrados - los proyectiles mueren si salen de la pantalla visible, por lo que cualquier llamada a actualizar el proyectil requeriría la persona que llama para tener acceso al objeto de imagen.
Eso es todo por ahora, volveré con más problemas cuando los alcance. Fin de la primera publicación!
Quién escribió ese artículo SRP? He estado tratando de encontrar ese libro porque es un tema que realmente me importa, ¿podría señalarme eso? – Goles
Me encontré por primera vez con el término mientras leía el libro "Desarrollo ágil de software: principios, patrones y prácticas". Por Robert C. Martin (2002). Martin es el fundador y presidente de Object Mentor (el sitio donde se publica el artículo). – Harry