Nuss… E Agora?!?

22abr/087

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...

Jogo de tabuleiro v1

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

Jogo de tabuleiro v2

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?

Comentários (7) Trackbacks (0)
  1. 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.

  2. Pq oposta, Rodrigo?

  3. 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.

  4. 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.

  5. 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.

  6. Agora entendi o ponto que você queria dizer com o artigo.
    Obrigado pelo esclarecimento.

  7. 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.


Leave a comment

(required)

Sem trackbacks