1. LIMITES
por Jammes Grenning
Luis Augusto S. Souza / Gabriel Vieira / Tiago Borges / Cézar Augusto Ferreira
2. Contexto
Raramente controlamos todos os códigos de
nosso sistema:
- compramos pacotes de outros fabricantes;
- usamos códigos livres;
- ou dependemos de equipes de nossa
própria empresa.
3. O uso de códigos de terceiros
Fornecedor de Interface X seu Usuário:
- Fornecedor:
- visa uma maior aplicabilidade da
interface para trabalho em diferentes
ambientes;
- visa atender a um público maior.
- Usuário:
- deseja uma interface que atenda suas
próprias necessidades.
4. O uso de códigos de terceiros
Exemplo:
- java.util.Map
- os Maps tem uma interface bastante
ampla com diversas capacidades.
- Vantagem:
- flexibilidade.
- Desvantagem:
- o aplicativo pode construir um Map e
passá-lo adiante (clear()).
5. O uso de códigos de terceiros
- A interface no limite (Map) está oculta;
- É possível alterá-lo causando pouco impacto no resto do aplicativo;
- A classe pode forçar regras de modelo de negócios.
6. O uso de código que ainda não existe
● Há um outro tipo de limite, um que separa o
conhecido do desconhecido.
● Existe lugares no código onde nosso conhecimento
parece sumir.
● Passos:
○ Definir as fronteiras do conhecido e do desconhecido;
○ Definir a interface limite;
○ Defina um fake para simular as funcionalidades e interações entre as
interfaces;
○ Quando a parte desconhecida se tornar conhecida utilize o padrão
Adapter para conectar serviços dependentes da interface limite com a
API, outrora desconhecida, desenvolvida.
7. Limites Limpos
● Bons projetos de software acomodam modificações
sem muito investimento ou trabalho.
○ O uso de códigos fora de controle implica em
uma atenção especial ao investimento para
garantir que mudanças futuras não sejam muito
onerosas.
● O código nos limites precisa:
○ de uma divisão clara
○ de testes que definem o que se deve esperar.
● É importante evitar que grande parte do código
"enchergue" a particularidade de terceiros.
8. Limites Limpos
● Pense que é melhor você depender de algo que
você controla do que algo que possa controlar
você.
● Para lidar com os limites de código:
○ podemos empacota-los
○ podemos converter a interface perfeita na que
nos for fornecida.
● Vale lembrar que:
○ nosso código se comunica melhor conosco
○ possui poucos pontos para serem alterados
quando um código externo sofre alteração.