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?
Respuesta
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.
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.
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)
¿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
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;)
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. –
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://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
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.
- 1. ¿Es este un diseño correcto de iText?
- 2. Confusión sobre el diseño correcto de un programa C++
- 3. ¿Es este un diseño de base de datos "correcto"?
- 4. ¿Es este un diseño de sincronización entrelazado correcto?
- 5. ¿Elegir el diseño correcto para un sitio web?
- 6. C# ¿este diseño es "Correcto"?
- 7. Qt - diseño correcto del código de aplicación
- 8. ¿Cómo obtener un rect visible correcto durante un validateTree?
- 9. ¿Es correcto "traducir los mensajes de error?
- 10. ¿Cómo devuelvo un mensaje correcto de éxito/error para JQuery .ajax() usando PHP?
- 11. Cómo crear un botón de salida correcto en qt
- 12. ¿Cómo hacer un diseño lineal desplazable?
- 13. wpf xaml error de diseño
- 14. agregando un diseño en otro diseño
- 15. Boost Tema - ¿Cómo reconocer interrumpo
- 16. Encontrar el ancho correcto de un NSString
- 17. ¿Es este un uso correcto de Thread.MemoryBarrier()?
- 18. posición exacta de un botón dentro de un diseño
- 19. capacidad de prueba de un diseño
- 20. No se puede obtener el diseño correcto con "fill_parent"
- 21. javascript necesita hacer un ajuste correcto
- 22. ¿Patrón correcto para registrar un receptor?
- 23. PySide: Eliminar un widget de un diseño
- 24. ¿Cómo obtener un inflador de diseño dado un contexto?
- 25. ¿Cómo reconocer si un script se está ejecutando en un tty?
- 26. Obteniendo Ant <javac> para reconocer un classpath
- 27. ¿Es esto correcto? ¿Un error jQuery que borra el almacén de datos?
- 28. ViewStub genera un error al inflar más de un diseño condicionalmente
- 29. Rieles: cómo encontrar la URL de dominio en un diseño
- 30. Reconocer espacio perdido
"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
whoops ... ¿Cuál es el singular de los criterios, entonces?!? –
arreglado, gracias :)) –