Esse final de ano eu andei dando umas viajadas por ai e, aproveitando uma folguinha longe dos computadores, eu me rodeei de alguns livros interessantes e pude aproveitar aquela leitura calma e sem compromisso como deve ser. Achei um deles muito agradável e resolvi blogar um pouquinho.

O livro que eu li foi o Head First: Design Patterns e devo dizer que foi uma surpresa agradável. Eu tinha um pequeno preconceito com os livros dessa série porque eu peguei um sobre Java e tinha achado muito enrolado, no entanto agora eu vejo que talvez eu tivesse preconceito com o Java (ou apenas estivesse muito estressado para sentar e ler com calma). O estilo de escrita é agradável e bem humorado e visa caminhar bem lentamente, introduzindo conceitos aos poucos e sendo bastante repetitivo para fixar as idéias. Além disso ele apresenta alguns exercícios simples com resposta e outros nem tanto que deixam margem para divagação e exploração do que foi aprendido. No final isto contribui bastante para manter o interesse.

Eu recomendo este livro pra quem quiser fazer a leitura introdutória sobre o assunto (Design Patterns) que eu fiz. Provavelmente os outros da série são bons também, mas daí eu já não posso garantir nada.

Patos são um tema recorrente no livro

Patos são um tema recorrente no livro

Mas então… design patterns?

Eu tenho um pequeno orgulho de entender já de maneira satisfatória os princípios de programação orientada a objetos e aplicar eles frequentemente em meus softwares, entretanto eu sabia que havia algo errado… muitas vezes eu acabo com alguma solução complicada demais ou confusa demais ou simplesmente tão feia que eu não consigo nem olhá-la de novo. Por essas e outras inexperiências na hora de fazer programas que tem tanto software sem pai por ai (pun intended).

Digo tudo isto porque é exatamente aí que eu precisava expandir os meus estudos. Eu já desconfiava, mas agora comprovei que depois que você entende como declarar classes, objetos e métodos você ainda não está programando OO. No máximo você está programando Java, Ruby, C++, … ; sofrendo com seus getters e setters e dividindo a lógica do seu programa em pedaços escolhidos arbitrariamente pela sua cabeça de programador mundano.

O interessante do livro foi a maneira como ele apresentou alguns princípios, que estão no cerne do que é a orientação a objetos (a de verdade) e que se seguidos levam a designs mais organizadas e manuteníveis. Alguns dos meus favoritos são:

  • Encapsule o que varia (em oposição a encapsular tudo como eu fazia antes)
  • Programe baseado em interfaces e não em implementações concretas
  • Uma classe só deveria ter um motivo para mudar
A Programadora cética é um dos personagens mais divertidos do livro. Cada programador mundano tem um pouco dela dentro de si

A Programadora cética é um dos personagens mais divertidos do livro. Cada programador mundano tem um pouco dela dentro de si

Tudo bem! No parágrafo anterior eu falei de princípios, entretanto isto está muito longe das linhas de código que nós escrevemos. Para aproximar um pouco estes dois mundos, alguns teóricos maneirinhos observaram problemas comuns que surgem quando escrevemos software, aplicaram estes conceitos e conseguiram soluções interessantes. Estas soluções foram chamadas de Design Patterns e parece que até rolou um livro aí, best seller, coisa fina.

Hmmm ….

Eu sei que é decepcionante e tudo mais, mas este texto não é uma boa introdução sobre o assunto. Considerem ele como um pequeno aperitivo do que vocês podem conseguir lendo mais sobre o assunto.

Considerações finais

  • Gostei bastante do livro e recomendo
  • O uso de Java e UML feito no livro é muito bem acertado. O código é simples e usa os melhores aspectos dos dois para explicar tudo. Fui despido de parte do meu preconceito destas tecnologias (agora só tenho preconceito contra programadores java (hahah))
  • Todos os capítulos são legais, porém o destaque vai logo para o primeiro. O padrão Strategy realmente explodiu minha mente e me fez enxergar como eu entendia OO errado.

E é isso, espero que tenham curtido o post. Quem me conhece pessoalmente e quiser tomar um café e discutir sobre o assunto, tá valendo!