¿La descomposición funcional es realmente un antipatrón?

9

Mientras leía Los peores antipatrones con los que te has encontrado , hice clic en el enlace de esta publicación para aterrizar en el sitio web sobre antipatrones.

Y la página http://sourcemaking.com/antipatterns/functional-decomposition me hizo preguntarme.

¿Qué tan malo es este antipatrón, y es un antipatrón en absoluto? Porque, aunque actualmente estoy haciendo principalmente programación OOP, todavía siento renuencia contra los lenguajes OOP puros, como Java, y también las prácticas de diseño que traen. Y supongo que todavía tengo algunos rasgos de la programación funcional mientras escribo el código.

Y esto planteó una pregunta, ¿estoy haciendo mal al apegarme al estilo funcional OOP +, o es común en la industria y en realidad no es tan malo?

Lo que sí sé por experiencia es que el estilo funcional de OOP + no es completamente compatible con los desarrolladores de OOP puro. Pero al mismo tiempo, si bien los desarrolladores de OOP tienen problemas con el desarrollo funcional de OOP +, el argumento en contra es que las soluciones de OOP a menudo están sobredimensionadas y son demasiado difíciles de usar, y desde mi experiencia, ni siquiera fueron un poco más fáciles, y en realidad introdujo algunos puntos ciegos para que los errores MUY serios se oculten.

Entonces, aunque tuve una discusión con mi colega sobre estos temas, llegué a la conclusión de que ninguna de las formas es realmente perfecta. Y todavía tengo la pregunta sin respuesta.

El problema OOP también fue reforzado por un enlace de otra publicación en el mismo hilo. El enlace mira el estilo Java OOP http://chaosinmotion.com/blog/?p=622

Entonces, ¿cuál es la actitud general hacia la mezcla de programación funcional con OOP? ¿Y cuál es el equilibrio que un desarrollador debe esforzarse por lograr?

Descifrador
fuente
1
Su título y cuerpo de preguntas están haciendo varias preguntas relacionadas, pero completamente diferentes, algunas de las cuales suenan retóricas. Tengo problemas para averiguar qué es exactamente lo que preguntas aquí.
blueberryfields
Lo siento, no soy un hablante nativo, y estoy teniendo dificultades para pensar en un mejor título. Las soluciones son bienvenidas.
Codificador
1
La pregunta es clara. No escuches blueberryfields.
jojo
55
Claramente, para los fanáticos de OOP, cualquier cosa que esté fuera del alcance de OOP es un "antipatrón". De hecho, el peor antipatrón posible es un uso excesivo excesivo de la propia POO.
SK-logic

Respuestas:

8

En primer lugar, la programación funcional es actualmente lo que están haciendo todos los niños geniales. El Anti-Pattern estaba hablando de programación procedimental realmente (sería más claro si la técnica se llamara "descomposición procesal" pero no lo es), y creo que tú también lo estabas.

El antipatrón hablaba de las malas formas de escribir código de procedimiento en un lenguaje orientado a objetos, la otra página hablaba de mal era escribir Java; en verdad, no hay un lenguaje tan fantástico que puedas hacer todo lo que quieras pero no puedas Escribe un código incorrecto.

En la práctica, he visto un poco más de ingeniería en código orientado a objetos que de procedimiento, un poco menos en ingeniería y un poco más en ingeniería.

En su caso, dependería de los detalles, y no estoy seguro de lo que realmente hace en un estilo de procedimiento. ¿Es correcto, claro, comprobable, fácil de modificar, etc.? Los criterios para juzgar el código deben basarse en tales preocupaciones prácticas, y no en la pureza de un estilo particular. Parece que en su caso personas razonables y conocedoras podrían estar en desacuerdo (¡y lo hacen!) Sobre esas preocupaciones, y de ser así, probablemente no haya una forma objetiva de determinar la verdad del asunto.

psr
fuente
2
Tu respuesta comenzó bien, pero luego te volviste vago y sin compromiso. Leí el artículo que el OP vinculaba a la descomposición funcional, y es un antipatrón horrible, practicado por desarrolladores de procedimientos que intentan calzar su estilo de programación en un paradigma orientado a objetos. Entonces no, no depende de los detalles.
Robert Harvey
pero no creo que Coder crea que el anti-patrón es lo que él ha hecho personalmente (ni tengo una razón particular para dudar de él). Su pregunta (una de ellas, en realidad) era si la programación de estilo de procedimiento puede estar bien en un lenguaje de objetos (probablemente más como en la función Java estática que se muestra en el blog Java rant). Y eso depende de los detalles de lo que codificó. (Prefacio con "En su caso"). Creo que está leyendo la pregunta básicamente como "¿Debería programar como en el antipatrón?", Lo que claramente sería malo, pero Coder lo sabe, creo.
psr
44
Incluso de esta manera: la descomposición procesal es una técnica válida, y descartarla por no ser tan compatible con OOP es un fanatismo puro. Deja que florezcan todas las flores. Todas las técnicas son válidas si se usan sabiamente. Cumplir con una metodología en particular no es sabio en absoluto.
SK-logic