2010-02-22 15 views
7

Soy un desarrollador que tiene 4 años de experiencia en la codificación .Net, y nunca me han importado los patrones de diseño en mi carrera. Recientemente me llamaron para una entrevista con uno de los mayores de la informática, hice 5 rondas (resolución de problemas, programación de pares, razonamiento lógico, 2 rondas de entrevista técnica) y no ofrecí trabajo.Frustraciones del patrón de diseño

La retroalimentación que recibí de ellos no es buena en cuanto a los principios de diseño, aunque están satisfechos con mi técnica de razonamiento lógico &. ¿Esto me hizo pensar que conocer patrones de diseño es la única forma de resolver los problemas?

Aunque nunca he usado mucho de unos patrones de diseño en mi codificación, siempre he tratado de implelement los principios básicos del OOPS

Podría u Estos principios se utilizan para diseñar un sistema que se acople de forma flexible y abierto para mejoras y fácil mantenimiento. Eventualmente, estos son los constructos centrales de todos los patrones de diseño.

Pero mi problema es encontrar un patrón correcto para el problema correcto. Sé que este conocimiento no vendrá solo leyendo todos los libros publicados en patrones y prácticas de diseño. este conocimiento viene con la experiencia de construir diferentes sistemas.

¿Hay algún caso de uso disponible para el patrón-problema que coincida con .. Y su sugerencia sobre el aprendizaje de los principios de diseño?

Saludos

+2

dudo mucho que nunca ha usado mucho en la forma de patrones de diseño en su codificación. El uso de los principios SOLID generalmente conducirá a un código que implementa patrones de diseño conocidos. Es muy probable que haya utilizado patrones de diseño en su código sin conocer sus nombres o sin entender que se trata de un patrón con nombre. – mezoid

+0

Lo siento, tal vez sea porque es lunes por la mañana ... ¿Cuál es su pregunta exacta? Los principios de diseño de aprendizaje provienen de leer libros de diseñadores líderes, estudiar su código, probar sus propios ejemplos de juguetes y experiencia de trabajo de la vida real ... No es una respuesta fácil, aparte del trabajo arduo. – Gishu

+0

@Gishu, el problema es que no puedo hacer coincidir los patrones con los problemas ... Cualquier problema se puede resolver de diferentes maneras ... ¿cómo puedo predecir que el patrón único es adecuado para mi problema entre otros? dices, para esto debo tener una experiencia de la vida real. – RameshVel

Respuesta

15

Aunque creo que no puede hacer daño familiarizarse con los patrones de diseño , quiero asegurarme de que no haya una combinación de dos cosas en su pregunta. Usted dijo que la retroalimentación que recibió fue que su capacidad para aplicar los principios de diseño fue débil, y de los comentarios concluyó que necesita estudiar los patrones del diseño . Pero eso es diferente.

Un "patrón de diseño" es un patrón recurrente que se ve en muchos dominios diferentes. Por ejemplo, en la arquitectura se ve el patrón de "patio interior" en muchos tipos diferentes de edificios. En la programación, ve patrones como "clase que solo puede tener una sola instancia" o "pequeño trozo de código que se pega a esto" en muchos tipos diferentes de programas.

Pero los principios no son patrones. Un patrón es un tipo particular de diseño recurrente; un principio es una idea que subyace a lo que hace un diseño bueno para los usuarios del artefacto que se está diseñando.

Por ejemplo, un principio de diseño del lenguaje JScript es "ser indulgente con pequeños errores". Si crea un objeto de fecha para el 31 de noviembre, lo corregirá silenciosamente hasta el 1 de diciembre en lugar de dar un error. No hay un "patrón de perdón de error pequeño". Hacer un diseño tolerante a errores es un principio del diseño - cuando tenemos la opción de cómo diseñar una característica en particular, consideramos cuán bien se alinea con todos los principios, algunos de los cuales son contradictorios, y los usamos para guiar el diseño de la característica.

Esto es no un principio de diseño de C#; de hecho, lo opuesto es un principio de diseño de C#. Los principios de diseño no son buenos o malos en sí mismos; son pautas para lo que hace que un diseño sea bueno para su conjunto de usuarios objetivo.

Escribir código sin entender los patrones significa no tener las herramientas en su caja de herramientas que facilitan la realización de tareas comunes. Escribir código sin entender los principios de diseño significa escribir un código que es inconsistente, difícil de comprender y contrario a las necesidades de sus usuarios. Ambos son importantes pero son muy diferentes.

+0

Gran respuesta. ¡Sin embargo, no estoy seguro de que esto haya sido seleccionado! – Padmarag

+0

@Eric, gracias por corregirme ... pensé que los principios y patrones de diseño son los mismos ... Perdón por la confusión. Fue en realidad los patrones de desgin que quería transmitir en mi publicación. lo corregiré – RameshVel

+0

Como muchas otras personas han dicho, no puede aprender si solo aprende de los libros. Sin embargo, aprender sobre los patrones de diseño sembrará tu cerebro para estar atento a los problemas que resuelven. Echa un vistazo a este artículo: http://norvig.com/21-days.html Y no te preocupes por eso. Los gerentes de contratación han subestimado mis habilidades y tenacidad muchas veces;) –

8

Los patrones de diseño son llamados patrones porque siguen apareciendo una y otra vez en muchos programas independientes, no porque se usan para armar programas de la misma manera que los cuadrados se suturan juntos para hacer una colcha Pueden ayudar a llegar a una solución para un problema de software, pero no son una solución en sí mismos.

4

Estoy seguro de que ha utilizado algunos patrones de diseño si ha estado programando durante 4 años, aunque es posible que no sepa que lo hizo.

El patrón de diseño le enseñará a resolver algún problema que alguien ya haya pasado y haya encontrado una solución para él. y finalmente lo documentamos para nosotros.

Si desea aprender patrones de diseño puede comenzar con "Patrones de diseño de Head First", es un gran libro.

5

Aunque use C#, le sugiero que revise algunos de los libros sobre patrones. Primero sería el libro de GoF: Design Pattens. Luego intente leer un libro sobre Patrones de diseño empresarial. Mientras lee, reconocerá (o verá) el Patrón. Este es generalmente un momento "Aha".

También reconocerá lo mismo desde su propio código. Conocer patrones te ayudará en un buen diseño. Ayuda a conocer los patrones, ya que recordará inmediatamente el patrón cuando surja un problema relacionado con él.

Los principios de programación que ha especificado son buenos y SI los siguen. Sin embargo, están más a nivel de clase.Avanzando hacia el diseño del sistema, los patrones serán más útiles.

Lo más importante: los patrones le dan un vocabulario para discutir ideas de diseño con todo el equipo.

+0

Buena descripción: ** Los patrones le dan un vocabulario para discutir ideas de diseño con todo el equipo **. – fastcodejava

2

No estoy seguro de lo que realmente necesita es patrones de diseño. Probablemente necesites una comprensión más general del diseño. Dar más consejos sobre eso será difícil sin más información.

Los patrones de diseño (como en el estilo GoF) funcionan mejor con un estilo particular de código de escritura. Imagina tus clases no como cosas, sino como personas. Imagine que estas personas luego se comunican entre sí, por algo como pasar notas, a través del correo entre departamentos o algo así.

En general, las formas en que se comunican estas personas y los patrones de flujo de mensajes son muy similares a los patrones de diseño de GoF. Los patrones que no coinciden con esto suelen ser 'ayudantes' necesarios para escribir aplicaciones que se ajusten a este modelo.

Cuestiones relacionadas