SOLID - Os cinco princípios ágeis de POORamon Valerio
Apresentação com exemplos de implementações simples sobre os cinco princípios SOLID.
O conceito é fácil de entender, porém exige uma boa abstração do desenvolvedor e requer conhecimento sobre o domínio da aplicação.
Um workshop que eu e Dherik Barison fizemos para levantar alguns pontos sobre como escrever bons testes, também levantamos alguns argumentos sobre o que existe no mundo de sotfware quando o tema é Testes, um workshop para trazer discussões das pessoas que o assistiram, para que conseguíssemos articular os assuntos de uma forma aberta, trazendo muitas vezes mais questionamentos do que respostas para os participantes
=D
SOLID - Os cinco princípios ágeis de POORamon Valerio
Apresentação com exemplos de implementações simples sobre os cinco princípios SOLID.
O conceito é fácil de entender, porém exige uma boa abstração do desenvolvedor e requer conhecimento sobre o domínio da aplicação.
Um workshop que eu e Dherik Barison fizemos para levantar alguns pontos sobre como escrever bons testes, também levantamos alguns argumentos sobre o que existe no mundo de sotfware quando o tema é Testes, um workshop para trazer discussões das pessoas que o assistiram, para que conseguíssemos articular os assuntos de uma forma aberta, trazendo muitas vezes mais questionamentos do que respostas para os participantes
=D
"Pau que nasce torto ...". TDD e a qualidade de código.Juliano Santos
Colocar software em produção de forma rápida é essencial para as empresas hoje em dia ... mas, a qualquer custo? É necessário ter ciclos de desenvolvimento curtos sem comprometer a qualidade dos sistemas. Vamos falar um pouco sobre o TDD e como ele pode nos ajudar a fazer um código melhor.
3. private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
4. private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
5. private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
Qual a saída das variáveis valor e contato?
7. private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
8. private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
9. private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
E agora? Qual a saída das variáveis valor e contato?
11. Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
Como funciona a passagem de parâmetros?
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
HeapStack/Pilha do programa
12. Como funciona a passagem de parâmetros?
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
13. Como funciona a passagem de parâmetros? - Exemplo 1
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
private
valor
contato
}
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
Uma cópia dos valores é
feita e variáveis valor e contato
são criadas com escopo do
método
14. Como funciona a passagem de parâmetros? - Exemplo 1
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
private
valor
contato
}
15. Como funciona a passagem de parâmetros? - Exemplo 1
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
contato @ABC1234
valor 20
Stack/Pilha do método
Stack/Pilha do programa
private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
nome: Contato 2
telefone: 1245-6789
email: contato2@email.com
16. Como funciona a passagem de parâmetros? - Exemplo 2
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
private
valor
contato
}
17. Como funciona a passagem de parâmetros? - Exemplo 2
contato @EDF67894
valor 10
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
Heap
contato @EDF67894
valor 20
Stack/Pilha do método
Stack/Pilha do programa
private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
18. Como funciona a passagem de parâmetros? Exemplo 2
contato @EDF67894
valor 10
Heap
private
valor
contato
}
contato @EDF67894
valor
Stack/Pilha do método
Stack/Pilha do programa
Uma cópia dos valores é
feita e variáveis valor e contato
são criadas com escopo do
método
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
20
19. Como funciona a passagem de parâmetros? Exemplo 2
contato @EDF67894
valor 10
Heap
private
valor
contato
}
contato @EDF67894
valor
Stack/Pilha do método
Stack/Pilha do programa
Uma cópia dos valores é
feita e variáveis valor e contato
são criadas com escopo do
método continua
apontando pra
mesma referência
na memória
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
20
21. Tipos primitivos: passagem por valor
contato @EDF67894
valor 10
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
HeapStack/Pilha do programa
22. Tipos primitivos: passagem por valor
Tipos classe, enum, array: passagem por referência
contato @EDF67894
valor 10
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
HeapStack/Pilha do programa