Alguém pode explicar a obsessão por padrões e antipadrões na programação? Eu pergunto porque não tenho absolutamente nenhuma idéia do que qualquer um dos padrões significa. Quando confrontado com uma tarefa de programação, penso um pouco sobre o problema, anote algumas estruturas de dados que julgue relevantes, protótipo de uma solução, separe alguns módulos e itere. Em nenhum lugar do processo eu penso "Oh, eu preciso do padrão FunkyLookyTastic aqui".
16
Respostas:
Um padrão é uma abordagem comum para resolver um tipo comum de problema; nada mais e nada menos. Ao conhecê-los e compreendê-los, você pode usar as experiências de outras pessoas para guiá-lo em direção ao tipo de solução que demonstrou funcionar bem, evitar armadilhas que foram encontradas no passado e discutir a solução usando terminologia familiar a outras pessoas que conheça esse padrão.
Obviamente, você pode encontrar uma boa solução sem usar explicitamente um padrão, e igualmente bem com uma solução ruim tentando aplicar um padrão que não se encaixa realmente no seu problema específico. Eu acho que a "obsessão" que você observa geralmente vem de pessoas que acabaram de descobrir o conceito, e acho que ele é bem mais poderoso do que realmente é. A maioria das pessoas os reconhece rapidamente pelo que são: uma ferramenta útil, não uma bala mágica.
Os antipadrões, por outro lado, são comportamentos geralmente observados que tendem a reduzir a qualidade do código. Novamente, é útil conhecer e entender algumas delas para evitar esse comportamento e tentar corrigi-lo (com argumentos fundamentados) quando você o observar em outras pessoas. Alguns descreveriam o uso excessivo de padrões como um antipadrão.
fonte
Os padrões são o conhecimento destilado dos programadores em um livro de receitas e uma maneira útil de os programadores se comunicarem.
Como outras respostas sugerem, os padrões são realmente soluções comuns para problemas comuns. O benefício é que geralmente você pode obter melhores soluções usando um padrão existente ou descobrir armadilhas prováveis antes de começar a codificar.
O outro benefício é quando você está conversando com alguém sobre seu código. Os padrões são outro tipo de jargão que condensam longas descrições em poucas palavras. Tente explicar "então temos um observador adicionado pela fábrica" sem se referir a padrões. Você pode fazer isso, mas leva muito tempo.
fonte
A maioria dos desenvolvedores se encanta com qualquer novo paradigma ou metodologia que surgir. Eu o fiz quando ouvi pela primeira vez sobre padrões de design. Padrões de design são exatamente o que o nome sugere: um design ou modelo para criar classes e modelar seu comportamento e interação de maneira previsível
Dê uma olhada nas casas. Eles têm algumas semelhanças. Cada casa tem uma sala de estar, cozinha, quarto, banheiro, lavabo, no mínimo. Ninguém vai construir uma casa sem banheiro, certo? Os apartamentos têm um padrão diferente dos bunglows. Castelos têm um padrão completamente diferente. Roupas também têm padrões. Um paletó e uma camisa formal têm o mesmo design básico, mas têm comportamentos diferentes: você não usará paletó de cowboy para uma entrevista. Da mesma forma, as classes e suas ações podem ser agrupadas de acordo com seu comportamento e design. Observar os elementos comuns em seus comportamentos fornece padrões de design para as classes.
Os padrões de design, no meu entendimento, são importantes apenas se a reutilização e a expansibilidade forem as principais preocupações. Se você criar aplicativos pequenos (por exemplo, menos de 10 classes), talvez não precise deles. Porém, grandes projetos, especialmente aqueles com equipes grandes trabalhando neles e com longos ciclos de manutenção e adição de recursos, definitivamente precisarão de padrões. Nem sequer é uma opção em grandes projetos.
Dê uma olhada em alguns tutoriais online sobre padrões. A Wikipedia tem um bom conjunto de artigos. Este site também é bom: http://sourcemaking.com/ . Se você é um programador experiente, verá que encontrou alguns padrões, talvez até mesmo tenha implementado algo semelhante sem conhecê-lo com um nome específico.
Não os ignore por completo! Você pode encontrá-los úteis no futuro, se não agora. A chave para abordar padrões de design com uma mente aberta é perguntar: "O que acontecerá se eu não usar padrões de design?" Padrões não são considerados "curas" (embora você possa usá-los como uma cura para um problema); ao contrário, eles incorporam o ditado "é melhor prevenir do que remediar".
Mesmo assim, eu alertaria contra uma obsessão com a implementação de padrões onde e quando você vir um pequeno pretexto para usá-lo. Eu enfrentei esse problema em um projeto em que o arquiteto estava convencido de que, sem o DP, o projeto seria um desastre completo. Tivemos uma reunião de grupo em que os engenheiros mudaram o design e apontaram que muitos padrões que ele recomendava não teriam utilidade além de mostrar "uau, olhe para os belos padrões". Foi preciso muita negociação e algumas negociações para reduzir o número de lugares em que os padrões eram usados apenas com base nas necessidades.
fonte
As pessoas que responderam estão corretas em termos de "programação baseada em padrões", como normalmente se pensa. Eu tenho uma definição um pouco diferente que acho mais relevante para o que estou fazendo e costumo usar "programação baseada em padrões" para descrever uma abordagem de plug-in em vez de uma abordagem de planejamento.
Como eu programo os plugins jQuery, um plug-in de nuvem CMS e plug-ins de comércio eletrônico, "programação baseada em padrões" dessa perspectiva significa examinar a tecnologia principal e quais casos de uso existem e atingir os mais relevantes estatisticamente. Os plugins, em particular, precisam ser muito baseados em padrões, para que se ajustem bem ao contexto de programação.
No entanto, é melhor aplicar um padrão DEPOIS de ver casos de uso válidos em vários projetos, para que seja estatisticamente válido para reutilização.
fonte