2009-08-25 9 views
5

Estoy discutiendo con un amigo sobre el diseño. Él propone una solución, y propongo una diferente. Mi sensación es que ambos tenemos razón, es solo cuestión de "preferir el azul al verde", pero me preguntaba si conoces buenas estrategias para distinguir entre un diseño bueno y uno malo, siempre que ambos resuelvan el problema. La simplicidad no es un criterio, porque está en el ojo del espectador. En nuestro caso, defiendo mi diseño como el más simple, y él hace lo mismo por su cuenta, simplemente porque cada uno de nuestros cerebros desarrolló su propio camino y ahora se siente cómodo con la solución encontrada.¿Cómo reconocer un error de un diseño correcto?

+1

"Un criterio, o crítico, es una carrera de bicicletas celebrada en un recorrido corto (por lo general, menos de 5 km), que a menudo se ejecuta en calles cerradas del centro de la ciudad". -- No sabía eso. :-) – Ken

+0

whoops ... ¿Cuál es el singular de los criterios, entonces?!? –

+0

arreglado, gracias :)) –

Respuesta

4

Haga el equivalente de hallway usability testing - explique ambos diseños a las personas al azar, e intente determinar qué tan fácil de agarrar les es a cada uno. Luego compara los resultados.

Eso es, por supuesto, una medida muy subjetiva. Probablemente será mejor que simplemente acepte estar en desacuerdo.

1

Por lo general, un buen diseño puede hacer referencia a las normas generales de diseño, dependiendo de si se trata de diseño de interfaz de usuario, diseño de bases de datos, etc.

Si ambos sus directrices de diseño de diseño de seguimiento/reglas, entonces ambos pueden ser buenos.

6

Mi opinión personal es que puede haber muchos diseños "correctos", pero a veces, dependiendo de cómo evolucionen las cosas, uno puede ser más correcto que otro. Algunas cosas a considerar:

  • ¿Qué diseño es más legible/comprensible?
  • ¿Qué diseño es más comprobable?
  • ¿Qué diseño es más flexible/más fácil de refactorizar en el futuro?
  • ¿Qué diseño es más extensible para incluir posibles escenarios futuros? (aunque tenga cuidado de no caer en la trampa de la ingeniería excesiva)
+0

¿Qué diseño funcionará mejor? Creo que el rendimiento debe considerarse al evaluar dos diseños diferentes. Esto no es una optimización prematura. El rendimiento es fundamental para cualquier aplicación dependiente de la base de datos. – HLGEM

4

Estoy en desacuerdo con su suposición de que "la simplicidad está en el ojo del espectador". Existen muchos métodos para establecer qué tan simple es una pieza de código. Cyclomatic complexity es una métrica bien establecida escrita hace décadas, así como Halstead Volume, y las métricas más recientes como "maintainability index" están demostrando ser herramientas útiles.

Tal vez en lugar de despedir a la simplicidad, se podría utilizar para ganar un argumento;)

+2

No necesito ganar mi argumento, necesito aprender cosas, y esto requiere interacción. No importa quién tiene razón y quién está equivocado. Importa que aprenda a ser un mejor diseñador. –

2

Hay algunos factores de calidad bastante ampliamente utilizados que se pueden utilizar para enfocar su conversación. "Mejor" es vago.

Más simple está bien definido. No es una preferencia, o un elemento de ojo-de-espectador. Es una medida simple.

Aquí hay un conjunto de atributos de calidad que puede usar para evaluar un diseño.

http://www.softwarearchitectures.com/go/Discipline/DesigningArchitecture/QualityAttributes/tabid/64/Default.aspx

http://my.safaribooksonline.com/9780470031469/a_taxonomy_of_quality_attributes

http://www.clarrus.com/documents/Software%20Quality%20Attributes.pdf

http://www.sei.cmu.edu/pub/documents/95.reports/pdf/tr021.95.pdf

1

Anote todas sus "casos de uso" y, por lo menos, asegurarse de que cada diseño cumple los requisitos mínimos.Si es posible, comience a escribir parte de la implementación y trate de visualizar los puntos de extensión y vea qué diseño es más flexible.

Si ambos diseños cumplen con todos los requisitos, una gran prueba para simplificar es tener el otro código de escritura del desarrollador para aprovechar su diseño. Si crees que tu diseño es elegante, pero el código para interactuar comienza a ser realmente complicado, probablemente no sea tan simple y elegante como creías originalmente.

Cuestiones relacionadas