Depende del idioma. Sin embargo, tenga cuidado con los patrones únicos y de fábrica, ya que pueden conducir a condiciones de carrera en entornos concurrentes o roscados.
En sistemas a gran escala o sistemas altamente concurrentes, la programación procesal orientada a objetos es un mal ajuste. De hecho, muchos de estos patrones de diseño existen en OOP debido a las deficiencias de esos idiomas. Existen patrones de inversión de responsabilidad como la inyección de dependencia, por ejemplo, debido a la falta de compostibilidad y flexibilidad del lenguaje.
Lee todo con un ojo crítico.
- ¿Es beneficiosa la programación de pares?
- Si le dieran el trabajo para hacer el peor lenguaje de uso general posible pero aún utilizable, ¿qué características tendría o no tendría?
- ¿Te fue fácil la programación de software o tuviste que luchar con algunos de los conceptos al principio?
- ¿Hay algún desafío / juego de SQL?
- ¿Cuáles son las cosas que todo desarrollador de aplicaciones debe saber antes de comenzar a desarrollar la aplicación?
Ahora, además de la respuesta ya proporcionada, en la programación funcional, tiene las siguientes técnicas para ayudarlo a secar su código.
– funciones lambda y funciones de aceptación como parámetros.
– transparencia referencial (efectos secundarios separados del cálculo matemático).
– aplicación de curry y función parcial
– mónadas, functores, cofunctores, solicitantes, monoides, comones, alternativas, flechas, todos los cuales son patrones basados en las matemáticas de sus datos y algoritmos, y no en algún concepto humano arbitrario y frágil.
– de la última lista anterior, algunos patrones de esos patrones abstractos incluyen Reader Monad (reemplaza algunos casos de uso para inyección de dependencia), Writer Monad (para escribir en un entorno), el cofunctor Predicate, el cofunctor de comparación, el tipo divisible (una Aplicativa / Alternativa contravariante que se puede usar como andamiaje para cualquier algoritmo Divide and Conquer https://hackage.haskell.org/pack…, etc.
– recursividad (incluidas 2 o más funciones que se llaman recursivamente entre sí), lo que permite realizar bucles sin mutaciones de datos o variables.
– STM (memoria transaccional de software) para un acceso seguro al estado compartido en un entorno roscado.
– el patrón de actor para evitar el estado compartido en entornos concurrentes / roscados donde sea posible
Y todos estos patrones hacen que sea fácil escribir código que sea seguro para subprocesos y trivialmente paralelo, y fácil de probar por unidad.