Padrões de Projeto: questão de bom senso
Tá, eu já falei várias vezes sobre as maravilhas de se usar padrões de projeto, como eles resolvem problemas e coisas do gênero. Porém, fica sempre uma dúvida no ar: quando usar Padrões de Projeto?
Os Padrões são receitas prontas e já muito testadas para resolver problemas recorrentes: aqueles que milhares programadores tinham. Logicamente falando, eles são para simplificar a nossa vida. Se você pode dizer "Ih. Já vi isso antes. A gente resolve isso com o State", não tenha dúvidas em aplicar o padrão. Ele vai fazer maravilhas pelo cronograma e tirar da cabeça dos programadores mais um problema.
Agora... uma coisa ninguém pode negar: padrões, sejam os de projeto quanto arquiteturais, sempre complicam programas simples. Se você tem um jogo simples de tabuleiro assim...

... sabe como ele poderá ficará depois de aplicado o MVC?

Não preciso nem perguntar se alguém notou como a complexidade aumentou, né? E olha que o MVC é só um padrão de arquitetura, hein? Imagina ainda adicionar estados para as TPeca e TTabuleiro, um Singleton para a TJogo...
Os padrões de projeto tornam as coisas mais coesas, porém aumentam o acoplamento geral de seu programa, pois as classes de um padrão são extremamente dependentes entre si. Eles aumentam muito a complexidade do código, coisa que muitas vezes não é necessário. Voltando ao exemplo acima, alguém acha necessário aplicar o MVC à um projeto que só tem 3 classes?
Usar Padrões de Projeto é uma questão de bom senso: utilize-os só quando eles simplificarem o problema, nunca para jogar mais gasolina no fogo que você tenta apagar, ok?
abril 28th, 2008 - 01:07
hehe…tenho uma visão bem oposta sobre o que esta expressado. Mas achei bacana seu post para uma pesquisa que faça um paralelo entre as duas linhas.
abril 28th, 2008 - 21:23
Pq oposta, Rodrigo?
abril 29th, 2008 - 19:37
Não acho que padrão seja para complicar as coisas.
complicado é misturar tudo em um mesmo lugar.
na segunda foto ficou bem mais claro as coisas envolvidas. Repara que para mexer no avatar da peç a ficou mais direto na segunda imagem, nao acha?
também não considero que os padrões aumentem o acoplamento, pelo contrário… o padrão façade, por exemplo, diminui o acoplamento de uma classe utilizadora criando uma fachada para as classes de negocio.
Em um jogo, vejo o uso do padrão memento em jogadas do tipo desfazer e fazer.
Thiago,
Fique a vontade para me criticar, apontar erros e acertos, estou a pouco tempo estudando os padrões GOF, mas resolvi realizar uma critica construtiva(pelo menos acho que foi..rsr), aqui no nuss… E agora?!? pq gosto muito do seu blog.
Desculpe o comentário gigante.
maio 1st, 2008 - 15:31
Kra, foi o q eu disse: eles são soluções prontas para problemas que você vai vir a ter. SE vc tem aquele problema, vai lá e usa o padrão. Tá resolvido .
Agora, o que eu quero dizer com esse artigo é justamente o que eu coloquei no final do artigo: use o bom senso, pois se você encharcá muito de por-menores, o código fica sim complexo.
Você disse “Repara que para mexer no avatar da peç a ficou mais direto na segunda imagem, nao acha?”. Não só achamos como temos certeza disso. Mas será que o exemplo passado “justifica a adição de uma estrutura em camadas”? Num jogo complexo, com certeza, mas ir lá na classe TPeça e trocar um bitmap ou 5 métodos caso troquemos de interface também é simples.
maio 1st, 2008 - 15:32
Entendeu o ponto? Tudo vai do que você pretende fazer. Se o projeto é simples, os padrões vão complicá-lo: a 2a figura está extremamente complexa para o tamanho do projeto. Você estaria chegando no mesmo resultado, mas com uma complexidade extremamente acima da demanda. É o típico “matá formiga com canhão”.
Qnd falei em aumentar o acoplamento geral falo em criar várias ilhas de código onde as classes são completamente dependentes entre si. Os padrões são extremamente acoplados por sua natureza “receita de bolo”: uma fábrica é uma fábrica, tá pronta, você precisa levar todas as classes daquele bloco para fazer aquilo funcionar. Tenta esquecer só uma classe prá ver a ziquizira q vai dar.
Ah, é claro q eu defendo o uso de padrões de projeto, mas tudo com bom senso.
maio 1st, 2008 - 20:49
Agora entendi o ponto que você queria dizer com o artigo.
Obrigado pelo esclarecimento.
setembro 22nd, 2008 - 22:57
Olá Tiago,
Conheci o seu blog através do post sobre MVC, achei muito interessante, pois trabalho com Padrões de Projeto há mais de 3 anos na área de jogos. Acredito que tenhamos várias idéias, ou cartas aproveitando o tema do seu jogo, para trocar.
Deixei registrado o meu blog, estou recem agora tendo um tempinho para me dedicar a ele.