Pergunta

Qual é a penetração dos padrões de design no mundo real?Você os utiliza no seu dia a dia de trabalho – discutindo como e onde aplicá-los com seus colegas de trabalho – ou eles permanecem mais como um conceito acadêmico?

Eles realmente fornecem valor real ao seu trabalho?Ou são apenas algo sobre o qual as pessoas falam para parecerem inteligentes?

Observação:Para efeitos desta questão, ignore padrões de design 'simples' como Solteiro.Estou falando sobre projetar seu código para que você possa aproveitar Controlador de visualização de modelo, etc.

Foi útil?

Solução

Qualquer programa grande e bem escrito usará padrões de projeto, mesmo que não sejam nomeados ou reconhecidos como tal.Isso é o que são os padrões de projeto, projetos que repetidas e naturalmente ocorrer.Se você estiver fazendo interface com uma API feia, provavelmente implementará um Facade para limpá-lo.Se você tiver mensagens entre componentes que precisa desacoplar, poderá usar Observer.Se você tiver vários algoritmos intercambiáveis, poderá acabar usando Strategy.

Vale a pena conhecer os padrões de design porque é mais provável que você os reconheça e então convirja para uma solução limpa mais rapidamente.No entanto, mesmo que você não os conheça, você acabará criando-os (se você for um programador decente).

E, claro, se você estiver usando uma linguagem moderna, provavelmente será forçado a usá-la para algumas coisas, porque elas estão incorporadas às bibliotecas padrão.

Outras dicas

Na minha opinião, a pergunta:"Você usar padrão de design?", por si só é um pouco falho porque a resposta é universalmente SIM.

Deixe-me explicar, nós, programadores e designers, todos usamos padrões de design...simplesmente nem sempre percebemos isso.Eu sei que isso parece clichê, mas você não segue padrões, os padrões vêm até você.Você projeta algo, pode parecer um padrão existente, você o nomeia dessa forma para que todos entendam do que você está falando e a lógica por trás de sua decisão de design seja mais forte, sabendo que foi discutido até náusea antes.

Eu pessoalmente uso padrões como ferramenta de comunicação.É isso.Não são soluções de design, não são práticas recomendadas, não são ferramentas em uma caixa de ferramentas.

Não me interpretem mal, se você é iniciante, os livros sobre padrões mostrarão como uma solução é melhor resolvida "usando" seus padrões, em vez de outro design defeituoso.Você provavelmente aprenderá com o exercício.No entanto, é preciso perceber que isso não significa que toda situação precise de um padrão correspondente para resolvê-la.Cada situação tem uma peculiaridade aqui e ali que exigirá que você pense em alternativas e tome uma decisão difícil sem uma resposta perfeita. Isso é projeto.

O antipadrão, entretanto, está em uma classe totalmente diferente.Você realmente querer para ativamente evite antipadrões.É por isso que o nome antipadrão é tão controverso.

Para voltar à sua pergunta original:
"Eu uso padrões de design?", Sim!
"Eu me inclino ativamente para padrões de design?", Não.

Sim.Os padrões de design podem ser maravilhosos quando usados ​​de maneira adequada.Como você mencionou, agora estou usando Model-View-Controller (MVC) para todos os meus projetos web.É um padrão muito comum no espaço web que torna o código do lado do servidor muito mais limpo e organizado.

Além disso, aqui estão alguns outros padrões que podem ser úteis:

  • MVVM (Model-View-ViewModel):um padrão semelhante ao MVC;usado para aplicativos WPF e Silverlight.

  • Composição:Ótimo para quando você precisa usar uma hierarquia de objetos.

  • Único:Mais elegante do que usar globais para armazenar itens que realmente precisam de uma única instância.Como você mencionou, é um padrão simples, mas tem sua utilidade.

É importante notar que um padrão de design também pode destacar a falta de recursos de linguagem e/ou deficiências em uma linguagem.Por exemplo, os iteradores agora são integrados como parte de linguagens mais recentes.

Em geral, os padrões de design são bastante úteis, mas você não deve usá-los em todos os lugares;exatamente onde eles são adequados para suas necessidades.

Eu tento, sim.Eles realmente ajudam na manutenção e legibilidade do seu código.No entanto, há pessoas que abusam deles, geralmente (pelo que tenho visto), forçando um sistema a um padrão que não existe.

Tento usar padrões se forem aplicáveis.Acho meio triste ver os desenvolvedores implementarem padrões de design no código apenas por fazer.Porém, para a tarefa certa, os padrões de design podem ser muito úteis e poderosos.

Existem muitos padrões de design além do simples que são usados ​​no “mundo real”.Bom exemplo Stackoverflow usa o padrão Model View Controller.Usei Class Factories várias vezes em projetos para meu empregador e já vi muitos projetos já escritos usando-os também.

Não estou dizendo que todos os padrões de design estão sendo usados, mas muitos estão.

Sim, temos, geralmente acontece quando começamos a projetar algo e então alguém percebe que se parece com um padrão existente.Em seguida, damos uma olhada nele e vemos como isso nos ajudaria a atingir nosso objetivo.

Também usamos padrões que não estão documentados, mas que surgem muito do design.

Veja bem, não os usamos muito.

Sim, Factory, Chain of Responsibility, Command, Proxy, Visitor e Observer, entre outros, estão em uso em uma base de código com a qual trabalho diariamente.No que diz respeito ao MVC, este site parece usá-lo muito bem, e os desenvolvedores não poderiam dizer coisas boas o suficiente no podcast mais recente.

Sim, eu uso muitos padrões de design conhecidos, mas também acabo construindo alguns softwares que mais tarde descobri que usam um padrão de design 'nomeado'.Os designs mais elegantes e reutilizáveis ​​poderiam ser chamados de “padrão”.É muito parecido com movimentos de dança.Todos nós conhecemos a valsa e os dois passos, mas nem todo mundo tem um nome para 'bump and scoot', embora a maioria de nós o faça.

MVC é muito conhecido, então sim, usamos bastante padrões de design.Agora, se você está perguntando sobre os padrões do Gang of Four, há vários que eu uso porque outros mantenedores conhecerão o design e no que estamos trabalhando no código.Porém, existem vários que permanecem bastante obscuros para o que fazemos; portanto, se eu usar um, não obterei todos os benefícios de usar um padrão.

Eles são importantes, sim, porque fornecem um método para falar sobre design de software de uma forma rápida, eficiente e geralmente aceita.Você pode fazer soluções personalizadas melhores, bem, sim (mais ou menos)?

Os padrões GoF originais foram extraídos do código de produção, então eles catalogaram o que já estava sendo usado na natureza.Eles não são puramente ou principalmente uma coisa acadêmica.

Acho o padrão MVC realmente útil para isolar a lógica do seu modelo, que pode ser reutilizada ou trabalhada sem muitos problemas.Também ajuda a desacoplar suas classes e facilita os testes unitários.Eu escrevi sobre isso recentemente (sim, plug sem vergonha aqui...)

Além disso, recentemente usei um padrão de fábrica de uma classe base para gerar e retornar a classe DataContext adequada que eu precisava instantaneamente, usando LINQ.

Pontes são usadas ao tentar unir duas tecnologias diferentes (como Cacau e Rubi no Mac, por exemplo)

Descobri, entretanto, que sempre que implemento um padrão é porque já o conhecia de antemão.Geralmente, é necessário pensar um pouco mais, pois descubro que devo modificar um pouco o padrão original para acomodar minhas necessidades.

Você só precisa ter cuidado para não se tornar e astronauta de arquitetura!

Sim, os padrões de design são amplamente usados ​​no mundo real – e diariamente por muitas das pessoas com quem trabalho.

Na minha opinião, o maior valor fornecido pelos padrões de projeto é que eles fornecem uma linguagem universal e de alto nível para transmitir o design de software a outros programadores.

Por exemplo, em vez de descrever sua nova classe como um "utilitário que cria uma entre várias outras classes com base em alguma combinação de critérios de entrada", você pode simplesmente dizer que é um "fábrica abstrata" e todos entendem instantaneamente do que você está falando.

Sim, padrões de design ou padrões abstratos fazem parte da minha vida, para onde olho começo a vê-los.Portanto, estou cercado por eles.Mas, como você sabe, pouco conhecimento é perigoso.Portanto, recomendo fortemente que você leia o livro GoF.

Um dos principais problemas sobre padrões de design é que a maioria dos desenvolvedores simplesmente não entende a ideia ou não acredita neles.E na maioria das vezes eles discutem sobre variáveis, loops ou switches.Mas acredito fortemente que se você não falar a linguagem dos padrões, seu software não irá longe e você se encontrará em um pesadelo de manutenção.

Como você sabe, o antipadrão também é perigoso e acontece quando você tem pouco conhecimento em padrões de design.E refatorar antipadrões é muito mais difícil.Como livro recomendado sobre esse problema, leia "AntiPatterns:Refatorando Software, Arquiteturas e Projetos em Crise".

Sim.

Estamos até usando-os em meu trabalho atual:Codificação de mainframe com COBOL e PL/I.

Até agora vi Adaptor, Visitor, Facade, Module, Observer e algo muito próximo de Composite e Iterator.Devido à natureza das linguagens, são usados ​​principalmente padrões estruturais.Além disso, nem sempre tenho certeza de que as pessoas que os usam o fazem conscientemente: D

Eu absolutamente uso padrões de design.Neste ponto, considero o MVC um padrão de design.Minha principal razão para usá-los é que sou humilde o suficiente para saber que provavelmente não sou a primeira pessoa a encontrar um problema específico.Raramente inicio um trecho de código sabendo qual padrão irei usar;Observo constantemente o código para ver se ele se desenvolve naturalmente em um padrão existente.

Eu também gosto muito Martin Fowler Padrões de arquitetura de aplicativos empresariais.Quando um problema ou tarefa se apresenta, vou para a seção relacionada (é principalmente um livro de referência) e leio algumas visões gerais dos padrões.Depois de ter uma ideia melhor do problema geral e das soluções existentes, começo a ver o caminho de longo prazo que meu código provavelmente seguirá por meio da experiência de outras pessoas.Acabo tomando decisões muito melhores.

Os padrões de design definitivamente desempenham um papel importante em todas as minhas ideias “para o futuro”.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top