A decomposição funcional é realmente um antipadrão?

9

Enquanto eu estava lendo Os piores anti-padrões que você encontrou , cliquei no link deste post para acessar o site sobre anti-padrões.

E a página http://sourcemaking.com/antipatterns/functional-decomposition me fez pensar.

Quão ruim é esse anti-padrão, e é um anti-padrão? Porque, embora atualmente esteja fazendo principalmente programação OOP, ainda sinto uma relutância em relação a linguagens OOP-puras, como Java, e também às práticas de design que elas trazem. E eu acho que ainda tenho algumas características da programação funcional enquanto escrevo o código.

E isso trouxe à tona uma questão: estou fazendo errado ao adotar o estilo OOP + Funcional ou é comum na indústria e não é tão ruim assim.

O que sei por experiência própria é que o estilo OOP + Funcional não é completamente compatível com desenvolvedores puros de OOP. Mas, ao mesmo tempo, enquanto os desenvolvedores de OOP têm problemas com o desenvolvimento de OOP + Funcional, o contra-argumento é que as soluções de OOP são muitas vezes super-projetadas e difíceis de usar, e, pela minha experiência, não eram nem um pouco mais fáceis e realmente introduziu alguns pontos cegos para erros MUITO sérios ocultos.

Portanto, mesmo tendo discutido com meu colega sobre esses tópicos, cheguei à conclusão de que nenhuma das maneiras é realmente perfeita. E ainda tenho a pergunta sem resposta.

O problema OOP também foi reforçado por um link de outra postagem no mesmo segmento. O link analisa o estilo Java OOP http://chaosinmotion.com/blog/?p=622

Então, qual é a atitude geral em relação à mistura de programação funcional com OOP? E qual é o equilíbrio que um desenvolvedor deve se esforçar para alcançar?

Codificador
fonte
11
Seu título e seu corpo de perguntas estão fazendo várias perguntas relacionadas, mas completamente diferentes, algumas das quais parecem retóricas. Estou tendo problemas para descobrir exatamente o que você está perguntando aqui.
blueberryfields
Desculpe, não sou um falante nativo e estou tendo dificuldades para pensar em um título melhor. Correções são bem-vindas.
Coder
11
A questão é clara. Não ouça blueberryfields.
jojo
5
Claramente, para os fanáticos da OOP, qualquer coisa fora do alcance da OOP é um "antipadrão". De fato, o pior antipadrão possível é o uso excessivo do OOP.
SK-logic

Respostas:

8

Antes de tudo, a programação funcional é atualmente o que todas as crianças legais estão fazendo. O Anti-Pattern estava falando realmente de programação procedural (seria mais claro se a técnica fosse chamada de "decomposição processual", mas não é), e acho que você também.

O anti-padrão falava sobre maneiras ruins de escrever código procedural em uma linguagem orientada a objetos, a outra página falava sobre mal era escrever Java - na verdade, não há linguagem tão fantástica que você possa fazer tudo o que quiser, mas não pode escreva código incorreto.

Na prática, eu vi um pouco mais de engenharia em código orientado a objetos do que em procedimentos - um pouco menos em engenharia e um pouco mais em engenharia.

No seu caso, isso dependeria dos detalhes, e não tenho certeza do que você realmente faz em um estilo processual. É correto, claro, testável, fácil de modificar, etc? Os critérios para julgar o código devem se basear em preocupações práticas, e não na pureza de um estilo específico. Parece que, no seu caso, pessoas razoáveis ​​e conhecedoras podem discordar (e fazer!) Sobre essas preocupações e, nesse caso, provavelmente não há uma maneira objetiva de determinar a verdade do problema.

psr
fonte
2
Sua resposta começou boa, mas você ficou vago e sem compromisso. Li o artigo que o OP vinculava à decomposição funcional, e é um antipadrão horrível, praticado por desenvolvedores de procedimentos que tentam transformar seu estilo de programação em um paradigma orientado a objetos. Portanto, não, não depende dos detalhes.
Robert Harvey
mas não creio que Coder acredite que o antipadrão seja o que ele fez pessoalmente (nem tenho motivos especiais para duvidar dele). Sua pergunta (uma delas, na verdade) era se a programação de estilo procedural pode ser boa em uma linguagem de objetos (provavelmente mais parecida com a função Java estática mostrada no blog Java Rant). E isso depende das especificidades do que ele codificou. (Eu prefácio com "No seu caso"). Acho que você está lendo a pergunta como basicamente "Devo programar como no antipadrão?", O que claramente seria ruim - mas Coder sabe disso, eu acho.
Psr
4
Mesmo assim - a decomposição processual é uma técnica válida, e descartá-la como não sendo tão compatível com OOP é um puro fanatismo. Deixe todas as flores florescerem. Todas as técnicas são válidas se usadas com sabedoria. Aderir a uma metodologia específica não é de todo sensato.
SK-logic