Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/08/2013, 19:22
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Duda diseño : entre re-uso / eficiencia / evitar divergencias

Gente

Tengo una duda de diseño que me tiene mal..... dentro de una clase XXX que tenia un metodo de busqueda llamado find() pero ahora se me desdoblo su funcionalidad dos veces:

findSubNoA()
findSubWithA()
findSubNoAWithB()
findSubWithAWithB()

Nota: el codigo podria quedar unificado en una sola funcion pero requeriria algunos IF aqui y alla pues segun deba considerar A o no-A y B o no-B.

Para A/no-A la variacion SI es importante y fue lo que motivo la primera division en findSubWithA() y findSubNoA() pero en el caso de B/no-B se podria "emparchar" con unos cuantos IF.


Motivacion de la consulta: si bien en principio no necesito velocidad no se si a futuro pueda dar un uso distinto (es una clase muy general) y deba escribir de cero para arreglar el codigo si coloco muchos condincionales.


Entonces... podria hacer la implementacion de las siguientes formas:

1) Los cuatro metodos por separado y el cliente elige cual usar.
-> PROS: velocidad, menos parametros o seteos
-> CONS: duplicacion de codigo

2) Separo los metodos de busqueda como clase aparte "XXXFind" :

2a) Herencia
-> No gano demasiado re-uso y los codigos podria divergir por error.
2b) Interfaces ....
-> ni intento re-usar pero sigo con el problema de la posible divergencia.
2c) Muchos IF dentro del codigo
-> PROS: un solo codigo, no hay divergencias.
-> CONS: eficiencia


Cual seria la mejor en un escenario tan hipotetico ? gracias por su tiempo.

(me estoy orientando por crear una clase aparte encargada exclusivamente de las busquedas pero requeriria algo mas de refactoring ... sera que es una perdedera de tiempo ?)
__________________
Salu2!

Última edición por Italico76; 07/08/2013 a las 19:34