Buenas tardes (o tarde o mañana, dependiendo de cuándo salga esta publicación).
Quiero hablar sobre la parte de élite de la programación y transmitir, en general, una idea obvia a los principiantes en el desarrollo de back-end (y no solo), en el camino utilizando el intento de comenzar a escribir en Habré.
Entonces
A cualquier programador con al menos un poco de buen gusto, que comenzó a programar por su propia voluntad, después de comprender los conceptos básicos del lenguaje y escribir los primeros proyectos, se le preguntará no "cómo hacer algo", sino "cómo hacer algo bien" y "cuáles son los estándares belleza ".
Estas, por supuesto, preguntas verdaderas tarde o temprano lo llevarán a los oscuros nombres "Abstract Factory", "Singleton", "Mediator" y las abreviaturas igualmente comprensibles SOLID, GRASP.
Tenga en cuenta que no cité el ejemplo de OOP, MVC, ORM: estos son conceptos con un significado y alcance muy específicos, con un nivel mínimo de abstracción.
OOP dice: "amigo, encontré una forma clara y comprensible de presentar programas".
MVC dice: "hombre, sería mejor si dividieras el código y las reglas de separación bajo el corte".
ORM dice: "pss, hombre, acabo de encontrar una manera de conciliar dos ideologías diferentes: OOP y DB".
Todo está claro aquí.
Estoy hablando de cosas que implican un nivel máximo de abstracción. Un ejemplo:
"Mediador":
personas, si tienes muchos objetos diferentes, haz uno central, conecta todo lo demás a él.
El programador solo se verá extraño en su dirección, si es sociable, dirá "¡gracias, gorra!", Y por los ojos no llamará más que "evidencia de capitán".
Lo mismo ocurre con los otros patrones:
"Fábrica":
personas, ¿sabían que pueden construir objetos usando otra clase?
"Mapeador de datos":
¿Por qué no usas una capa adicional de abstracción para guardar datos?
"Observador":
chico, pero vamos a buscar algunas interfaces?
"Estrategia":
¿Sabes qué es el polimorfismo?
Y especialmente SÓLIDO:
S (responsabilidad única):
un módulo debe realizar solo una tarea, ¡no lo olvides!
I (segregación de interfaz):
¡use diferentes interfaces para diferentes operaciones!
Bueno y así sucesivamente.
Llevo al hecho de que el área principal de aplicación de patrones no es en absoluto acostumbrarse a un buen código. Se necesitan patrones para discutir un programa ya escrito por alguien, para formalizar un buen código. Para que pueda decir ("¿para qué es esta clase?" - "ah, esto es parte del intermediario"). Pero no para verificar sus escritos con los patrones uml del ataque convulsivo "aah, ¿qué patrón aplicar en este caso?".
Un programador que tenga fluidez en algún tipo de concepto (por ejemplo, de lo anterior) escribirá el código utilizando las mejores prácticas, incluso si no ha escuchado una palabra sobre ellos. Y esas mismas mejores prácticas son necesarias para formalizar la relación de su equipo con su código, y la quintaesencia aquí es, por supuesto, GRASP.
Lo que me gustaría decir a los programadores novatos:
- Aprende conceptos, no patrones. Los conceptos son realmente importantes.
- Si de repente te das cuenta de que no conoces los patrones, no entres en pánico. Esto solo le importará al reclutador, pero no a su código y buen estilo.
Lo que me gustaría decirle al gurú de Habr:
- Puedo estar equivocado En serio
- Entiendo que la idea es común. Pero, sin embargo, por alguna razón, a menudo me encuentro con un enfoque similar para principiantes.
- Basado en el párrafo 2, un artículo similar ya puede haber sido escrito antes que yo. No lo se
Y finalmente: el artículo, por supuesto, es subjetivo, no llamo a nadie para nada (para pelear con las fábricas). Esta es solo mi opinión :)
Además, solo soy un junior, pero este enfoque, prestar demasiada atención a los detalles, siempre me ha llevado a un malentendido.
Que tengas un buen día!