aprensentacao oo-trincheiras

Post on 21-Jun-2015

466 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Orientação a objetos

nas trincheiras.Higor Ramos

About(me)• Desenvolvedor na Lambda3• 7 anos de programação• Final de semana é tempo de camping e trekking!• 48GBs de música e contando..

Lambda Lambda Lambda!“Não existe outro lugar onde eu tenha vontade de trabalhar que não seja a Lambda3.”

Orientação a objetos

Contextualizando..• Experiência em desenvolvimento de aplicações LoB• Conhecimento adquirido através dos muitos livros• Etapas do aprendizado de orientação a objetos

E você, como se preparou ?

Baby steps

Aprendendo sobre objetos• Você aprende sobre classes, objetos, métodos,

interfaces...• Domínio sobre keywords que promovem um júnior a

pleno• Da noite pro dia tudo virou um objeto!

Quem disse que seria fácil ?• Classes gigantes!• Métodos com várias responsabilidades• Efeitos colaterais por todos os lados!• Separação de responsabilidades ? Onde ? O que ?

Herança

Codigo! Codigo! Codigo!

…E ai você decide mostrar seus códigos para um

programador mais experiente!

Princípios

DRY

Injeção de dependência

Inversão de controle

Aberto-fechado

Keep it simple stupidResponsabilidade única

Substituição de liskovYAGNI

One reason to change

Composição sobre herança

Programar para interfaces

Low coupling

Princípios• 143 princípios OO• identificar problemas de design• Não é difícil relacionar um ao outro

Febre de princípiosDesign de um método para realizar pagamento com cartão de crédito demora no mínimo duas horas!

Como ficou o design...

http://bit.ly/YPq7Ft

Status• Os membros não são mais todos públicos• Métodos não possuem mais que 40 linhas.

Supletivo, supletivo, supletivo...• Experiência com diferentes problemas• Discussões técnicas para elaboração de design• Designs propostos são bem aceitos pelo time• Aventuras pelos padrões de projetos

Padrões de projeto

Uma lista grande de padrões masnem todos são realmente usados..

Sem violar o encapsulamento, capturar e externalizarum estado interno de um objeto, de maneira que o objetopossa ser restaurado para esse estado mais tarde

Padrões de projeto• Aprenda diversos cenários de utilização• Resolva problemas aplicando parte do padrão• Implemente padrões em linguagens diferentes• Prototype,decorator,facade,iterator,observer,template

method, factory method

Padrões de Arquitetura de Aplicações Corporativas

Sim, ainda vale a pena conhecer alguns desses padrões!

Padrões de Arquitetura de Aplicações Corporativas

• Capacidade de entender um pouco mais de frameworks e APIs famosas(Active Record,NET).

• Técnicas explicadas de forma simples• Exercício de entendimento OO

Software Legado

Código legado

“To me, legacy code is simply code without tests.”Michael C Feathers

“Any code that has been delivered”Autor desconhecido

Código legado• Se o código legado não é OO o meu código também

não pode ser OO.• O banco de dados é relacional então não posso

construir software OO• O código legado não possui testes unitários, por isso eu

não consigo escrever

Modelo anêmico

Modelo anêmico

“The fundamental horror of this anti-pattern is that it's so contrary to the basic idea of object-oriented design; which is to combine data and process together.

Martin fowler

Codigo! Codigo! Codigo!

Origem do modelo anêmico• Falha na separação de responsabilidades• Granularidade exagerada• Falha no encapsulamento de comportamento• Falha no entendimento do domínio

Camada anticorrupção“É uma forma de isolar a comunicação entre o sistema sendo construído com sistemas legados através da criação de uma fachada interna.”

a.k.a encapsular gambiarra

Camada anticorrupção

“The public interface of the ANTICORRUPTION LAYER usually appears as a set of SERVICES, although occasionally it can take the form of an ENTITY.”

Eric Evans

Tecnicamente falando..• Facades e Adapters(Gama, 1995)• Tradutores• Mecanismo de comunicação

Codigo! Codigo! Codigo!

Outros exemplos..• Ferramenta ORM(hibernate, entity framework)• Exposição de API Rest

Refatoração

RefatoraçãoSabe aquela história que você passa a maior parte do tempo lendo código ?

É verdade!

Testes!Teste seu código!

Testes unitários• Planejamento antes de código• Desacoplamento• Separação de responsabilidades• Encapsulamento adequado

Testes• Testes unitários• Testes integrados• Testes, testes e testes!

Cheiro ruim em código

Exemplos..• Método longo demais• Classe longa demais• Parâmetros demais• Intimidade indevida• Classe preguiçosa

Anti-padrões

São soluções reutilizáveis para problemas recorrentes em determinados contextos de desenvolvimento de software.

#SóQueNão

Anti-padrões• Modelo anêmico• Objeto deus• Poltergeists• Problema do yo-yo• Programação orientada a exceções

Linguagem ubíqua“Uma linguagem única entre todos os envolvidos no projeto baseada no domínio.”

Eric Evans

Ao infinito e além..

YAGNI“Somente implemente funcionalidades quando você realmente precisar delas, nunca quando você achar que vai precisar.”

Ron jeffries

Aplicando o princípio de pareto..

• Princípios OO• Camada anticorrupção• Testes unitários• Linguagem ubíqua• Software em produção!

Quais passos eu estou seguindo..• Trabalhe com uma boa equipe!• Leia os clássicos!• Proponha soluções, compartilhe código• Aprenda a resolver problemas de formas diferentes• Participe de dojos, trabalhe em par

www.lambda3.com.br

top related