Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/11/2015, 09:13
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Al repetir el programa tengo problemas con fichero o logica

Cita:
Iniciado por RGT Ver Mensaje
Viendo los pros y los cons.......
Un método únicamente debe recibir un parámetro cuando realmente lo necesita y esto es:
  • Si el método necesita información que no es capaz de calcular por sí mismo
  • Si el método necesita información que no es conveniente que calcule por sí mismo (por ejemplo cálculos costosos que se puedan precalcular o porque no sea competencia de dicha clase)
  • Si el método necesita proporcionar un resultado via ese parámetro
Si no se cumple ninguna de esas condiciones lo más normal es que el parámetro que intentas poner sea, dicho claramente, absurdo. Hay ciertas prácticas que ayudan a que el código sea más complicado de mantener y, en cambio, no aportan absolutamente nada... este tipo de casos encajan en este perfil.

Por otro lado, te interesará saber que cada vez que pasas por valor un std::string como parámetro de una función realmente estás haciendo una copia de ese string... lo cual podría ser una práctica a evitar. La norma general al pasar objetos a funciones (siempre y cuando éstos no vayan a ser modificados dentro del método) es pasarlos como referencia ya que así evitas realizar copias sin sentido de los objetos.

Reconozco también que este último punto ya empieza a entrar en la parte oscura de C++ y remarco que depende de la clase que estemos gestionando. En el caso de std::string pues sí, es recomendable, sin embargo hay otras clases que internamente gestionan su estado como si de un smart pointer se tratase. En estos casos sería irrelevante pasar el objeto por valor o referencia ya que el coste computacional va a ser prácticamente el mismo.

Cita:
Iniciado por RGT Ver Mensaje
Aun asi sigo con el problema comentado en este topic, podria ayudarme a identificar cual es....... :(
Ahora mismo el programa te muestra los datos de ese fichero no cuando juegas una segunda vez... sino cuando juegas una segunda partida consecutiva. Es decir, cada vez que arranques el juego te quedarás sin ver los records, estos únicamente se mostrarán si, al terminar la una partida decides iniciar otra sin salir del programa.

¿No es lo que quieres? tal vez entonces necesitas reconsiderar la lógica de tu programa. No se, quizás dejando de evaluar VecesJugado que, todo dicho sea de paso, a mi ese nombre me invita a pensar que contiene un entero, no un booleano. Quizás ese nombre no sea el más adecuado. Aunque esto te parezca una soberana tontería ya te adelanto que no lo es. Cuando tengas que lidiar con un programa con decenas de variables, como te de por poner nombres raros vas a flipar cuando tengas que corregir errores.

Piensa al respecto que una de las técnicas para dificultar que alguien copie un código fuente para uso propio consiste en ofuscarlo... y en ese proceso una de las primeras tareas a realizar es sustituir los nombres de las variables y de los métodos por otros aleatorios... y te garantizo que el código resultante es bastante infumable así de primeras. Imagínate algo del tipo:

Código C++:
Ver original
  1. int A003(int m00, int m000, std::string m0000)
  2. {
  3.   if( m00 < m000 && m00 ) A045(m00+4,m00-3);
  4.   else if( m000 ) Z404(m0000);
  5.   else return m000-m00;
  6.  
  7.   return  __d34d(m0000);
  8. }

Piensa en ello.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Última edición por eferion; 10/11/2015 a las 09:21