Que tipo de problemas posso enfrentar se não usar os Padrões de Design de Software? Você pode me falar sobre os problemas de abordar o design usando técnicas padrão de orientação a objetos?
Que tipo de problemas posso enfrentar se não usar os Padrões de Design de Software? Você pode me falar sobre os problemas de abordar o design usando técnicas padrão de orientação a objetos?
Respostas:
Você está perdendo o ponto.
Os padrões de design existem inerentemente ao fazer o design de software, assim como os padrões estruturais existentes no mundo. Mesmo se você não souber o nome das coisas, acabará descobrindo que certas estruturas físicas são adequadas para certos problemas. Você verá que uma forma triangular de madeira / barras de metal / etc é uma estrutura muito estável, mas apenas em um plano. Você encontrará tijolos quadrados com certas vantagens sobre os arredondados ...
Da mesma forma, certas estruturas de software são, de alguma forma, únicas ou ideais. Você acabará por encontrá-los e usá-los independentemente se souber os nomes para eles. Esse é o núcleo do que são os padrões de design - eles são nomes dessas estruturas que programadores experientes conhecem e usam de qualquer maneira. Dá aos programadores a capacidade de se comunicar de maneira muito mais uniforme e sucinta. Também permite que os programadores pensem no conceito de padrões de maneira mais consciente.
Então, os dois pontos principais que estou tentando fazer:
Quem não se lembra do passado é condenado a repeti-lo.
Você não enfrentará nenhum problema específico além daqueles levantados pelo seu design. E, com o tempo, você acabará usando os padrões sem estar ciente, apenas gastando tempo para descobrir os padrões sozinho. O conhecimento prévio dos padrões facilita a identificação no design e traz a grande vantagem de que eles são comprovados por várias pessoas.
Tudo o que está sendo desenvolvido hoje se baseia amplamente em conhecimento anterior; não faria sentido ignorá-lo. Imagine construir um arranha-céu hoje sem conhecer os problemas enfrentados pelas pessoas que construíram catedrais algumas centenas de anos atrás.
Que tipo de problemas posso enfrentar se não usar os Padrões de Design de Software?
Você terá o problema de não conseguir escrever nenhum software.
Variáveis são um padrão de design.
Métodos são um padrão de design.
Operadores - adição, subtração, etc. - são um padrão de design.
Instruções são um padrão de design.
Valores são um padrão de design.
As referências são um padrão de design.
Expressões são um padrão de design.
Classes são um padrão de design.
...
Tudo o que você faz em programação o tempo todo é um padrão de design . Na maioria das vezes, o padrão está tão arraigado em seu pensamento que você parou de pensar nele como "um padrão de design". As coisas que você precisa aprender como "o padrão singleton" e assim por diante são simplesmente padrões que ainda não foram inseridos no idioma que você está usando.
Você pode me falar sobre os problemas de abordar o design usando técnicas padrão de orientação a objetos?
Não. Não tenho ideia do que essa pergunta significa. Padrões de design são "técnicas padrão orientadas a objetos" - é isso que os torna padrões de design . Um padrão de design é uma técnica padrão para resolver um problema específico, particularmente (embora não necessariamente ) em uma linguagem orientada a objetos.
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- Essa é (quase) a definição de um padrão de design - uma construção de código flexível / facilmente reutilizável usada para superar uma limitação na própria linguagem, que é fácil de se comunicar com outras pessoas. Uma vez que faz parte do idioma, não é mais um padrão de design.
Compreender o ponto de um padrão de design é mais importante do que usá-lo à risca. Alguns padrões são, na OMI, tolos, pelo menos nos paradigmas linguísticos aos quais estou acostumado. A IMO, um programador que simplesmente usa padrões de design às cegas e sem realmente entendê-los, é um programador pior do que aquele que gostaria de pensar sobre as coisas. Mas alguém que se familiarize com as idéias e depois decida por si mesmo se vale a pena provavelmente será um programador muito mais forte do que qualquer um.
Dito isto, não tenho a menor idéia de qual é o objetivo do peso mosca e não tenho vergonha de admitir isso. (veja os comentários de outra entrada da Wikipedia que ajudou muito)
Eu recomendo a entrada da wikipedia sobre padrões de design. É muito concisa e claramente escrita. Muito útil para se ter uma idéia de por que alguém pode se preocupar com um determinado padrão de design ou não. Pessoalmente, acho os mais simples os mais úteis e não penso duas vezes em modificar uma determinada implementação de qualquer padrão para atender às minhas necessidades.
São idéias, não projetos. Em alguns idiomas, não são idéias muito boas. Em outros, eles são vistos como justificativos por superar as fraquezas de design de uma linguagem que podem ser melhor compensadas por menos complexidade. Independentemente disso, não faz mal examiná-los e tentar entender os desafios que eles devem superar antes de decidir sobre suas próprias soluções preferidas.
Que tipos de problemas você enfrentará? Você pode perder oportunidades e gastar mais tempo com problemas do que precisava, a menos que seja um gênio da programação e já tenha tudo resolvido. É importante manter um olhar crítico das idéias de programação populares, mas nunca é demais entender o que as pessoas pensam que estão resolvendo, porque isso dará mais clareza às suas próprias soluções / abordagens preferidas.
O principal problema que você enfrentará é que você estará reinventando a roda . Eles são chamados de padrões porque aparecem frequentemente e de maneira previsível.
Mesmo se você seguir os padrões de design, poderá acabar com um design ruim. Os padrões de design são naturais e você acabará usando algum sabor dele em seu design. Você terá que se esforçar muito para não usar nenhum dos padrões. Não há razão para condenar os padrões de design, o mais importante é escolher os padrões certos para suas necessidades
Você está usando padrões de design o tempo todo sem perceber. Muitas bibliotecas padrão em idiomas populares são projetadas com padrões de design em mente. Um exemplo é a FileReader
biblioteca do Java, projetada usando o padrão de design do decorador . Agora, falando sobre seu próprio código, você não é obrigado a usar padrões de design (na maioria dos casos). Um padrão de design é uma "solução reutilizável para um problema que ocorre com frequência" , o que significa que o ajudará a escrever códigos mais limpos e mais sustentáveis, portanto depende de você o quanto você deseja evitar o código espaguete.