He estado trabajando con JavaScript durante los últimos 4 años. Tengo mucha confianza en mis habilidades para resolver problemas y puedo ver que la calidad de mi código está mejorando. Intento mantenerme al día con la comunidad y actualmente estoy trabajando con ES2015 y React.js. Sin embargo, siento que no puedo comprender los patrones de diseño de programación. Sé dónde encontrar recursos sobre esto y ya he leído libros al respecto. Confío en mis compañeros de trabajo para tomar decisiones sobre la estructura del proyecto, pero no tengo problemas para trabajar en ello.
Siempre que necesito comenzar algo por mi cuenta, busco estos dos caminos: si estoy usando una gran biblioteca / marco como React.js, tiendo a copiar lo que está haciendo la comunidad; Si estoy en algo más pequeño, usaré el patrón del módulo. Sé que una vez que comprenda mejor este tema, podré tomar mejores decisiones, pero por ahora estoy completamente perdido.
¿Debo buscar una educación superior en esto? ¿Necesito un mentor en este tema? ¿Soy simplemente estúpido? ¿Es realmente tan difícil de entender?
fuente
Respuestas:
Los patrones de diseño de software son soluciones bien conocidas para problemas bien conocidos. La forma en que los comprende es aprendiendo los patrones, entendiendo cómo funcionan y sabiendo cuándo es apropiado aplicar cada uno a su diseño de software.
La forma de aprender patrones de diseño de software es estudiándolos, uno a la vez. Es un proceso de educación continua. Si desea reducir la huella de aprendizaje, estudie los patrones que se relacionan directamente con las tecnologías que está utilizando actualmente.
Algunas cosas importantes que debe saber sobre los patrones de diseño:
Algunos patrones de diseño son de naturaleza arquitectónica. MVC y MVVM son ejemplos de tales patrones. Utiliza dichos patrones cuando necesita los beneficios organizativos y estructurales que proporcionan.
Algunos patrones de diseño son soluciones para las deficiencias en los lenguajes de programación. No necesitará estos patrones si usa un lenguaje de programación más expresivo, pero a menudo no puede hacer esta elección. La mayoría de los patrones de GoF son en esta categoría .
Use un patrón de software solo cuando intente resolver el problema que el patrón está específicamente diseñado para resolver. Si está escribiendo una aplicación uniendo patrones de software, lo está haciendo mal.
No existe un patrón de software existente para todos los problemas informáticos existentes. Si ese fuera el caso, la programación sería simplemente un ejercicio de coincidencia de patrones.
Algunos patrones son en realidad antipatrones. La complejidad adicional que introducen estos patrones supera los beneficios que proporcionan. Tendrás que decidir por ti mismo, patrón por patrón, cuál de estos patrones evitarás.
fuente
El enfoque de aprendizaje de cada persona es un poco diferente, y no tengo idea de cuál es su enfoque general, pero sí creo que se está perjudicando al etiquetarse como "estúpido".
Personalmente, según mis observaciones de lo que muchos llamarían ingenieros de software "exitosos", diseñadores, etc., todos tienen un tema común para su aprendizaje: "experiencia". Creo que esta es su "educación superior" y aprenderá más rápidamente de ella que comprar toneladas de libros en Amazon y leerlos (un mal hábito mío).
Entonces, por ejemplo, tome un patrón GOF como el patrón de comando e impleméntelo en el idioma que elija. Comprenda los beneficios que le brinda a usted y los inconvenientes. Los diversos libros sobre patrones de diseño te explicarán esto, pero creo que es mejor aplicar ese conocimiento prácticamente y aprender de él. No descarte el material de lectura, tienen un propósito, pero el mundo de TI difícilmente es un ejercicio de libro de texto. Dicho esto, esa es mi opinión y visión del mundo de TI y, en parte, representa luchas propias al comenzar mi carrera en ingeniería de software. Además, veo un problema importante, incluso con desarrolladores de software con mucha experiencia es la impaciencia y el olvido de disfrutar lo que están haciendo. Así que tómese su tiempo con lo que está aprendiendo y recuerde disfrutar realmente de lo que está haciendo, de lo contrario, ¿por qué molestarse en invertir tiempo en ello?
Además, aproveche la experiencia práctica de otras personas. Hay una gran cantidad de soluciones de código abierto, tanto buenas como malas, y puede aprender de ellas. Mire cómo han aplicado patrones y piense cómo lo abordaría de manera diferente.
Entonces, mi consejo general es que si siente que su enfoque es incorrecto, cámbielo. Mire a las personas a su alrededor que siente que está aprendiendo el material que siente que no está comprendiendo y observe lo que están haciendo o incluso pregúnteles.
fuente
La respuesta corta es que no necesitas . Puedes escribir código sin ellos. Como dijo Matthew en los comentarios, esto es particularmente cierto en JavaScript, donde el lenguaje es bastante flexible y los proyectos tienden a ser más pequeños. Pero si ha estado programando durante 4 años, me resulta difícil creer que no haya tropezado con cosas que se sienten repetitivas o incómodas. Son esas áreas que estás redescubriendo o faltan patrones de diseño.
Ejemplo: el sistema de eventos de JavaScript a menudo es inadecuado para la tarea en cuestión. ¿Nunca te encuentras con ganas de poder combinar o transformar flujos de eventos? ¿O esa serie de eventos fueron valores de primera clase por derecho propio? Necesita los patrones de mediador y / u observador. ¿Necesita enlace de datos bidireccional? La misma historia
¿La frágil jerarquía del prototipo se cayó? Mezcla / Rasgo / Subclase Patrones de fábrica al rescate.
fuente
Encuentre un mentor, alguien con muy buena experiencia para aprender. Hágale preguntas, mire su código, envíe una revisión de código e intente colaborar con él. Esta es la mejor manera de intensificar sus habilidades de codificación.
extra:
Colabora en algún proyecto simple de OSS que te guste
Cuando hay dos formas de resolver el mismo problema, elija siempre la más simple
Desarrolle algo de experiencia adicional con proyectos paralelos en los que es libre de cometer todo tipo de errores extraños, y aprenderá el patrón de diseño "a la fuerza" (tm)
fuente