O nosso código precisa responder às mudanças que ocorrem ao longo do projeto.
Nesse workshop colocamos a mão na massa para entender como o nosso código pode ajudar a abraçar mudanças.
4. AGENDA
$> Mudança em projetos Ágeis
$> O patinho fail
$> Strategy - Dividir para simplificar
$> Adapter - Seja como a água
$> Factory - Gerenciando objetos
$> Transformando o patinho fail
4
27. O EU S2 LIVROS
Plataforma para juntar livros e pessoas (leitores/autores)
Precisa ser de fácil acesso
Permitir o login através de várias redes sociais existentes
27
28. API DOS SERVIÇOS
28
API FaceNote:
FACE_NOTE_SUCESSO = 200
FACE_NOTE_REVOCADO = 403
FACE_NOTE_BLOQEUADO = 408
API Zuiter:
ZUITER_SUCESSO = 202
ZUITER_PENDENTE = 400
usuários apenas em downcase
34. API DOS SERVIÇOS
34
API Hoogle:
HOOGLE_SUCESSO = 200
HOOGLE_REVOCADO = 403
HOOGLE_BLOQEUADO = 409
usuários não podem ter espaço extra
#dica: “ string “.strip == "string"
38. STRATEGY
Padrão de comportamento, ou seja, distribui responsabilidades
Criar estratégias e fazer com que seja fácil mudá-las
Estratégias seguem uma mesma interface
38
39. APLICANDO O PADRÃO STRATEGY
39
Login
LoginViaFaceNote
LoginViaZuiter
status e
mensagem
método?
status e
mensagem
dados do
usuário
47. EXEMPLO DE PARÂMETROS
47
#exemplo de hash
{
tipo_de_busca: :categoria,
resultados_por_pagina: 10,
categoria: :eletronicos,
ordenar_por: :relevancia
}
48. TIPOS DE BUSCA
Busca normal: apenas o nome do produto precisa ser especificado, ordem
de exibição padrão por "relevância"
Busca por categoria: é necessário especificar categoria, ordem de exibição
dos exibição padrão por "mais recente"
A quantidade de produtos exibidos por página é 15 por padrão
48
54. SIMPLE FACTORY
Padrão de criação, ou seja, remove responsabilidade de criar
Utiliza objeto especializado para criar novas instâncias
Não confundir com Factory Method e Abstract Factory!
54
55. APLICANDO O PADRÃO SIMPLE FACTORY
55
Busca
FabricaDeCriterio
Criterio
dados da busca
parametros
novo objeto
60. INTERFACE COM SISTEMAS LEGADOS
Informações dos clientes via API com XML
Um endpoint para email, outro para endereços, outro
para pagamentos e outro para telefone
Os dados devem ser apresentados juntos em JSON
60
63. BUSCA PROMOCIONAL
Quando o sistema legado sair, não usaremos mais xml
Ainda não sabemos exatamente o que será usado
Precisamos separar a lógica de processamento de xml
63
67. ADAPTER
Padrão estrutural, ou seja, facilitam o design do projeto
Define um contrato entre duas interfaces diferentes
Simplifica mudanças nessas interfaces, desde que mantenha-se o
mesmo contrato
67
81. NOTA PARA SI MESMO
81
Escreva em um post-it
algo para se lembrar
durante a semana
Mantenha essa nota
perto de você
www.funretrospectives.com/note-to-self/