Quais são os melhores recursos para padrões de projeto e seus usos?
-
01-07-2019 - |
Pergunta
Quando se trata do uso de padrões de projeto, eu estou supondo que há três tipos de lojas. Aqueles que não saberia um padrão se ele bater-lhes no rosto - estes geralmente preferem a abordagem Ctrl-C / Ctrl-V para code-reutilização. Aqueles que gastam horas por dia procurando o seu código legado na esperança de implementação de mais um grande padrão - estes geralmente passam mais tempo refatoração do código dos programas simples que nunca seria gasto em cem anos de manutenção. E, finalmente, aqueles que andam o caminho do meio usando padrões quando eles fazem sentido, e codificação tudo o que vem em primeiro lugar para o código minimamente exposta.
Eu estou querendo saber se alguém tem bloqueado uma abordagem bem para a incorporação equilibrada de uso padrão no ciclo de vida de desenvolvimento de software. Além disso, qual é o melhor recurso na web por padrões, os seus fatores de motivação, e seu uso adequado?
Graças.
Solução
Há lotes de diferentes famílias 'padrão' lá fora, mas tendo a sua pergunta seus termos mais amplos ...
Eu recomendo:
- Jim Coplien padrões organizacionais
- O Grupo Hillside wiki
- O Kevlin Henney local tem abundância de excelentes ligações e documentos
Off-line (meus favoritos):
Off-line (popular):
- GoF Design Patterns
- Refactoring de Fowler: Aperfeiçoando o Projeto de Código Existente
Outras dicas
Boa uso de padrões depende de conhecimentos e experiências; não há nenhuma fórmula para isso. Uma boa coisa a fazer é ter alguém que é experiente na aplicação de padrões criteriosamente para rever regularmente o código de todos os outros na equipe para se certificar de que eles não estão uso excessivo ou subutilização padrões de projeto. Eles não são receitas pré-cozido -. Eles precisam de habilidade para aplicar de forma eficaz e que tem de ser aprendida
O meu primeiro e melhor exposição aos padrões de projeto foi o Portland Pattern Repository .
O uso de "padrão" depende em alto grau de
- a língua utilizada
- objetivos um como para achive.
Design teste padrão pode ser nomeado superestimada em linguagens como C ++, Java e outros. Eles escondem os introduz inflexibilidade com todos os tipos de problemas de digitação. Aqui está um link sobre o padrão de "sobreviver" em línguas menos restritivas: http://norvig.com/design-patterns/
Outro exemplo é o programmming orientada aspecto, em que com as coisas esforço poder foram "introduzidas" em uma língua não é "projetado" para ele.
A filosofia por trás das ferramentas usadas tem uma grande influência também. Basta comparar digamos PHP ou Visual programas e soluções básicas médios em Smalltalk, Lisp comum, Haskell e similares.
Os elementos de sintaxe ter um grande impacto também. Você verá toneladas de loops semelhantes digamos que em C, C ++ (iteradores), mas se você olhar para languags que suporte a funções de ordem superior você só vai encontrar alguns loops.
Você então tem que ver o caminho que as pessoas fazem a programação de acesso, até baixo ou de cima para baixo, o crescimento fragmentado ou construção de pyramides, ou quaisquer outras preferências individuais
Eu sugiro a leitura do link mencionado, e depois verificar implementações em "diferentes" línguas ....
Saudações Friedrich
Todo mundo está usando padrões o tempo todo. Eles só pode não saber. Mesmo uma coisa simples como 'iterar sobre uma lista' é um padrão.
Eu acho que a melhor maneira de incorporar padrões em seu ciclo de trabalho, é apenas para usá-los, e se referir a eles pelo nome quando discuti-las e ao comentar seu código. Felizmente, isso vai resultar em uma expansão de conhecimento.
Assim, digamos, por exemplo, você viu que o que você está fazendo é um grande ajuste para Observer. Você diz ao seu colega "Ei, isso vai ser muito fácil de fazer se fizermos este objeto observador, e esse objeto seu assunto."
Ou o seu colega vai entender imediatamente - que é padrões economizando seu tempo -. Ou você começa a educá-los, e próxima vez você menciona Observer eles vão entender imediatamente
E, ao mesmo tempo, você está espalhando o conhecimento, e eles vão detectar oportunidades para usar os novos padrões que aprenderam de você. Isso vai nos dois sentidos, é claro. Da próxima vez que poderia ser -los ensino você um novo padrão.
Tudo isso se baseia em seu colega não ser do tipo que balança a cabeça e finge entender algo quando não o fazem. Você precisa deles para dizer: "Ei, você mencionou Observer, eu não acho que sei o que é."
Eu acho que o melhor recurso web contendo informações sobre padrões e refatoração - http://sourcemaking.com
Eu sou um grande fã da série e ter lido muitos dos seus livros, por isso eu recomendo cabeça First design Patterns . Você pode lê-lo on-line através da O'Reilly Safari Bookshelf , mas a cópia impressa vem com um cartaz grandes padrões muito .
Eu não poderia concordar mais com o comentário acima. Eu uso de padrões de projeto onde eu possa, mas sempre contar com o resto da minha equipe para realmente entender os benefícios de um padrão particular. Caso contrário, você acaba com código feio e um invólucro leve, que lembra um pouco o padrão.
Como um aparte http://www.developer.com tem alguns artigos por mês que dizem respeito padrões de design e suas aplicações. Boa sorte!
Eu acho que eu teria que recomendar Refactoring:. Aperfeiçoando o Projeto de Código Existente
(fonte: 2020ok.com )
A abundância de exemplos de como implementar uma utilização sensata de padrões.
A definição e resposta original é a origem do conceito, em projeto . Este livro trata do conceito em um nível muito theortical, ao invés da fala de gestão que se infiltrou na área. Sua visão é que os padrões de design são nomes apenas para expressões comuns; eles enumerar alguns e justificar suas posições.
Eles evitar o "O padrão de design que eu deveria usar" tipo de pergunta, ao invés lidar com problema como "Am I pisar naturalmente em uma área bem conhecida? Se assim for, os outros podem experiência me ajuda?". padrões de projeto, para mim, não são como componentes pré-fabricadas você cola em conjunto para fazer uma solução. Eles são apenas repositórios de orientação para quando você se deparar com uma situação semelhante a um os outros têm combatido, e dar nomes para permitir que as pessoas referem-se às situações gerais na conversa.
Projeto padrões são engraçado em que você só sabe onde usar um padrão quando você entender completamente o padrão aplicável. Coisas como Estratégia, Observer, Iterator você pode, aftera pouco de prática, o uso sem pensar muito difícil. Se você estiver em C # você usa o Iterator o tempo todo (IEnumerable ...) sem pensar nisso como um padrão.
Na minha opinião, esses padrões simples são os melhores padrões. Você já tem um trabalho a fazer, e tentar encaixar o seu problema em um padrão após o outro quando isso não acontece muito fit é um desperdício de seu tempo, e resulta em mau código.
O meu conselho é olhar para os diagramas UML para um padrão, e se é bastante simples, em seguida, tentar e aprender bem o suficiente para que você possa recuperá-lo mais tarde. Um padrão com um contrato mais simples é provável que seja mais útil com mais freqüência.
Eu iria com o Gang of Design Patterns de Quatro me
reservarEu concordo com essas referências, mas não é novato amigável. Para padrões de projeto rápidas de aprendizagem início o caminho mais fácil:
Em seguida, seu pode verificar os livros mais avançados, uma vez que você tem a grande imagem (um monte de exemplos práticos; -))