2011-02-05 8 views
5

Parece que cada vez que uso el patrón de comando, siempre me lleva a un número significativamente mayor de clases que cuando no lo uso. Esto parece bastante natural, dado que estamos ejecutando trozos de código relevante juntos en clases separadas. No me molestaría tanto si no terminara con 10 o 12 subclases de Comando por lo que podría considerar un pequeño proyecto que solo hubiera usado 6 o 7 clases de otra manera. Tener casi 19 clases para un proyecto habitual de 7 clases parece casi incorrecto.Patrón de comando que conduce a explosión de clase

Otra cosa que realmente me molesta es que probar todas esas subclases de Comando es un problema. Me siento lento después de llegar a los últimos comandos, como si me estuviera moviendo más lento y no más ágil.

¿Le suena esto familiar? ¿Lo estoy haciendo mal? Siento que he perdido mi agilidad al final de este proyecto, y realmente no sé cómo implementar y probar continuamente con la velocidad que tuve hace unos días.

Respuesta

5

Los patrones de diseño son plantillas generales para resolver problemas de forma genérica. La compensación es exactamente lo que estás viendo. Esto sucede porque necesita personalizar el enfoque genérico. Sin embargo, 12 clases de comando no parecen mucho para mí, personalmente.

Con el patrón de comando, es de esperar que los comandos sean simples (solo un método de ejecución, ¿no?) Y, por lo tanto, fáciles de probar. Además, deben poderse probar de forma aislada, es decir, debería poder probar los comandos fácilmente con poca o ninguna dependencia.

El beneficio que se debe ver son de dos tipos:

1) Usted debe haber visto su enfoque específico, complicado simplificado mediante el uso de la pauta (s) que ha elegido. es decir, algo que se estaba poniendo feo rápidamente ahora debería ser más elegante.

2) Debería ir más rápido, debido al enfoque simplificado y la facilidad de probar sus componentes individuales.

¿Puede utilizar otros patrones, como compuesto, y usar un buen diseño OO para evitar la duplicación de código (si está duplicando código ...)?

+0

No estoy duplicando el código. Son métodos de ejecución bastante simples que realizan tareas distintas. Fue solo la gran cantidad de clases las que me molestaron, dado que solo tengo unas 4 o 5 clases de dominio. – Mike

+0

@mike sí 12 clases no son muchas. Si son simples, deberías poder probarlos fácilmente. También creo que una vez que el patrón esté en su lugar y te acostumbres irás más rápido – hvgotcodes

+0

Además, no es significativo probarlos en forma aislada. En esa capa de mi arquitectura, están sujetos al conjunto completo de reglas comerciales. Eso también es un área que es bastante molesta. – Mike

4

No parece que haya muchas clases de comando, pero estoy de acuerdo con usted en que huele un poco si constituyen más del 60% de sus clases. Si el proyecto es lo suficientemente complejo como para merecer el uso del patrón de comando, sospecho que encontrará algunas clases que piden que se dividan. Si no, tal vez el patrón de comando es excesivo.

Las otras respuestas aquí tienen grandes sugerencias para reducir la complejidad de sus comandos, pero prefiero la simplicidad donde puedo encontrarla (al bowling game).

+0

Tengo miedo de abandonar el patrón de comando. Es donde analizo el ingreso de texto, lo comparo con las expresiones regulares y ejecuto el trabajo. Es una pequeña cantidad de trabajo, pero tiene una funcionalidad significativa y cohesiva. ¿Crees que merece la pena abandonar el patrón? – Mike

+0

¡Creo que suena como un gran argumento para usar el patrón de comando! Echaré un vistazo al resto de tus clases y me aseguraré de que todas tengan el mismo sentido de funcionalidad significativa y cohesiva, pero parece que estás en el camino correcto. –

+0

Decidí seguir y terminé el proyecto hoy. Resultó mejor de lo que pensé ayer, especialmente cuando di un paso atrás y ejecuté 120 pruebas automatizadas sobre esos comandos. :) – Mike

Cuestiones relacionadas