¿Qué tipo de problemas puedo enfrentar si no uso los patrones de diseño de software? ¿Puede contarme sobre los problemas de abordar el diseño utilizando técnicas estándar orientadas a objetos?
design-patterns
Yo, estudiante
fuente
fuente
Respuestas:
Te estás perdiendo el punto.
Los patrones de diseño existen inherentemente cuando se hace el diseño de software, al igual que los patrones estructurales existen en el mundo. Incluso si no conoce el nombre de las cosas, eventualmente encontrará que ciertas estructuras físicas son adecuadas para ciertos problemas. Encontrará que una forma de triángulo de madera / barras de metal / etc. es una estructura muy estable, pero solo en un plano. Encontrarás que los ladrillos cuadrados tienen ciertas ventajas sobre los redondos ...
Del mismo modo, ciertas estructuras de software son de alguna manera únicas u óptimas. Eventualmente los encontrará y los usará independientemente de si conoce los nombres de ellos. Ese es el núcleo de lo que son los patrones de diseño: son nombres para estas estructuras que los programadores experimentados conocen y usan de todos modos. Brinda a los programadores la capacidad de comunicarse de manera mucho más uniforme y sucinta. También permite a los programadores pensar en el concepto de patrones de manera más consciente.
Entonces, los dos puntos clave que estoy tratando de hacer:
fuente
Los que no pueden recordar el pasado están condenados a repetirlo.
No enfrentará ningún problema específico que no sean los planteados por su diseño. Y con el tiempo terminarás usando los patrones sin darte cuenta, solo pasaste tiempo descubriéndolos por ti mismo. Conocer los patrones de antemano los hace más fáciles de detectar en el diseño y tiene la gran ventaja de que son probados por varias personas.
Todo lo que se está desarrollando hoy se basa en gran medida en el conocimiento previo, no tendría sentido ignorarlo. Imagine construir un rascacielos hoy sin conocer los problemas que enfrentaron las personas que construyeron catedrales hace cientos de años.
fuente
Tendrá el problema de no poder escribir ningún software.
Las variables son un patrón de diseño.
Los métodos son un patrón de diseño.
Los operadores (suma, resta, etc.) son un patrón de diseño.
Las declaraciones son un patrón de diseño.
Los valores son un patrón de diseño.
Las referencias son un patrón de diseño.
Las expresiones son un patrón de diseño.
Las clases son un patrón de diseño.
...
Todo lo que haces en la programación en todo momento es un patrón de diseño . La mayoría de las veces el patrón está tan arraigado en su pensamiento que ha dejado de pensarlo como "un patrón de diseño". Las cosas que tiene que aprender como "el patrón singleton", etc., son simplemente patrones que (todavía) no se han incorporado al idioma que esté utilizando.
No. No tengo idea de lo que significa esta pregunta. Los patrones de diseño son "técnicas estándar orientadas a objetos"; eso es lo que los convierte en patrones de diseño . Un patrón de diseño es una técnica estándar para resolver un problema particular, particularmente (aunque no necesariamente ) en un lenguaje orientado a objetos.
fuente
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- Esa es (casi) la definición de un patrón de diseño: una construcción de código flexible / fácilmente reutilizable utilizada para superar una limitación en el lenguaje en sí, que es fácil de comunicar a los demás. Una vez que es parte del lenguaje, ya no es un patrón de diseño.Comprender el punto de un patrón de diseño es más importante que usarlo al pie de la letra. Algunos patrones son, en mi opinión, tontos, al menos en los paradigmas lingüísticos a los que estoy acostumbrado. IMO, un programador que simplemente usa patrones de diseño a ciegas y sin comprenderlos realmente es un programador peor que el que quisiera pensar en las cosas por sí mismos. Pero alguien que se familiarice con las ideas y luego decida por sí mismo si valen la pena probablemente sea un programador mucho más fuerte que cualquiera de ellos.
Dicho esto, no tengo ni idea de cuál es el punto del peso mosca y no me da vergüenza admitirlo. (ver comentarios para otra entrada de wikipedia que ayudó mucho)
Recomiendo la entrada de wikipedia sobre patrones de diseño. Está escrito de manera muy concisa y clara. Muy útil para tener una idea de por qué uno podría molestarse con un patrón de diseño dado o no. Personalmente, tiendo a encontrar los más simples, los más útiles, y no pensaría dos veces antes de modificar una implementación dada de cualquier patrón para satisfacer mis necesidades.
Son ideas, no planos. En algunos idiomas no son muy buenas ideas. En otros, son vistos con acierto como acusaciones de superar las debilidades de diseño de un lenguaje que podrían compensarse mejor a través de una menor complejidad. De todos modos, no está de más examinarlos e intentar comprender los desafíos que deben superar antes de decidir sus propias soluciones preferidas.
¿Qué tipo de problemas enfrentarás? Puede perder oportunidades y pasar más tiempo en problemas de lo que necesita a menos que sea un genio de la programación que ya lo tiene todo resuelto. Es importante mantener un ojo crítico de las ideas de programación populares, pero nunca está de más entender qué piensan las personas que están resolviendo porque eso brindará más claridad a sus propias soluciones / enfoques preferidos.
fuente
El principal problema que enfrentarás es que reinventarás la rueda . Se llaman patrones porque aparecen con frecuencia y de manera predecible.
fuente
Incluso si sigue los patrones de diseño, puede terminar con un mal diseño. Los patrones de diseño son naturales y terminarás usando algo de sabor en tu diseño. Tendrás que esforzarte mucho para no usar ninguno de los patrones. No hay razón para condenar los patrones de diseño, lo más importante es elegir los patrones correctos para sus necesidades.
fuente
Estás usando patrones de diseño todo el tiempo sin darte cuenta. Muchas bibliotecas estándar en lenguajes populares están diseñadas con patrones de diseño en mente. Un ejemplo es la
FileReader
biblioteca de Java que está diseñada utilizando el patrón de diseño del decorador . Ahora, hablando de su propio código, no está obligado a usar patrones de diseño (en la mayoría de los casos). Un patrón de diseño es una "solución reutilizable para un problema común" , lo que significa que lo ayudará a escribir un código más limpio y fácil de mantener, por lo que depende de usted cuánto desea evitar terminar con un código de espagueti.fuente