[GUÍA] Estrategias de programación

r2d2rigo

#28 constructor siempre.

  • Te aseguras que el objeto esta completamente inicializado cuando lo creas, y no hay ningun hack interno que puede introducir comportamiento indefinido.
  • Hay lenguajes que no soportan la inicializacion en la declaracion.
1 2 respuestas
Flashk

#27 hecho
#23 yo también hago las validaciones primero y luego lanzo excepciones si no se cumple algo antes de empezar el cuerpo principal de la función, así haces un filtrado y compruebas que las precondiciones se cumplen. Lo que no acabo de ver son dos detalles:

  1. Por qué usar un bucle for si vas a usar luego un break. Usa un while, ¿no?

  2. Puestos a salir del bucle para luego evaluar la condición y decidir si lanzar o no la excepción, ¿Por qué no lanzarla desde dentro del bucle? Entiendo usar booleanos cuando tienes que comprobar muchas condiciones diferentes o complejas, y entonces según que flags se hayan activado, lanzar excepción u otra o con un mensaje diferente, pero cuando solo tienes un flag...

1 respuesta
B

Yo tengo una pregunta. Siendo una aplicación que va a estar distribuida en varios idiomas, cual es la mejor opción para tener los idiomas controlados.

1 respuesta
willy_chaos

#32 como compruebas si un item existe en un array?? te lo has de patear todo no? salvo que lo encuentres antes y por lo tanto para que hacer mas iteraciones si ya lo tienes?

si te refieres a porque no directamente hago la comprobacion de condicion en el while ( ) o en la del for ( ) son manias y formas del curro. respecto a while, suelo usarlo si tengo un iterador (java), si es un array al que accedo por posicion, uso for porque asi la variable i se queda en ese scope (salvo que la necesite para mas tarde)

porque hay veces que tenemos que romper el bucle dependiendo de que se den una o otra condicion, haciendo que la cabecera del for sea larga

1 respuesta
Flashk

#34 me refería al uso de for Vs while para un bucle que seguramente no necesites recorrer entero, por supuesto. X'D

willy_chaos

como digo en mi caso suelo usar el while cusndo tengo un iterator o un metodo .next() (ResultSet), cuando desconozco el size (leer lineas de fichero), etc...

al final no me ciño a uno en concreto, sino que dependiendo de lo que tenga que hacer y las opciones, uso while, for, do-while (este ultimo rara vez)

xD

Kr4n3oK

#31 Además por legibilidad y mantenimiento estoy seguro de que también es idóneo inicializar todo en el constructor.

B

Declararlas fuera e iniciarles en el constructor

#31 Este sabe, de lo que habla

#33 pues depende el lenguage de programación que hagas y de la cantidad de texto que esta app tenga, yo lo que tengo (para web apps)son jsons con todos los strings... y según el lenguage que se use (varible que paso por url) recorro un json u otro y cargo los strings en el html

willy_chaos

Aprovecho el tema para preguntar como gestionáis unas cosillas con la base de datos:

Supongamos que tengo que hacer una generacion de login con un formato especifico (el cual se genera mediante un algoritmo usando nombre apellido o combinaciones de estos).

El algoritmo de generacion de login hace 5 iteraciones. Ejemplo primera iteracion -> nombre.apellido, segunda iteracion -> n.apellido

Todo esta generacion viene en un paso que se tiene que lanzar en una transaccion ya que se da de alta en otras tablas de la base de datos. Por cada iteracion se hace una consulta a la tabla de logins existentes para evitar duplicaciones, si ya existe, se hace otra iteracion. Ademas los logins se filtran por un diccionario (tabla de la base de datos -> palabras_malsonantes).

La pregunta es:

La tabla de palabras_malsonantes no cambia (la cambiamos nosotros a manita), esta query la meteríais también dentro de la transacción (tenemos un pool de conexiones) ? O sabiendo que no va a cambiar, lanzaríais fuera de la transacción?

Yo opino que no.

No se si me explico.

1 respuesta
Kr4n3oK

#39 Creo que este tipo de preguntas debería de ir en un hilo nuevo. Ya que este problema es mas concreto de una lógica de negocio determinada. De todos modos, si le puedes dar una vuelta para ser aplicable de forma general se podría dejar.

eisenfaust

empezad por formatear bien el codigo

vaya patada en los huevos tener que leer los bloques de #1 y #13

1 respuesta
r2d2rigo

#41 no es mi culpa que el tag code de aqui no vaya bien. Prefiere su alteza un gist embebido?

Usuarios habituales