Post on 03-Jul-2015
description
Princípio da Equivalência de Versão/Reuso
Davidson MarquesJarison Araújo
REP (Reuse/Release EquivalencePrinciple)
• A unidade do reuso é a unidade de versão.
• Apenas componentes que possuem um sistema de rastreamento de versão podem ter reuso efetivo.
• Esta unidade é o pacote.
REP (Reuse/Release EquivalencePrinciple)
• Um método não deve ser copiado e colado dentro do seu código, nem mesmo uma classe deve ser copiada e colada em seu projeto
• Ao contrário disso, inclua o pacote dentro do seu projeto, mantendo o autor original
Mantendo o autor original
• O autor original identifica as versões• O autor original evolui seu pacote e
mantem a compatibilidade• O autor original é resposável pela
evolução e manutenção do código• Você passa a ser cliente do pacote
Contra Exemplo
• Não há reuso• O mesmo método é
implementado em duas classes diferentes, mas com a mesma finalidade
• Elevado custo de manutenção
meu.pacote.trataarquivos
ArquivoParaDownload
+gerarArquivoZip()
DocumentosParaArquivoamento+List arquivos+gerarArquivoZip()
Evolução do Contra Exemplo
• Já é notório o reuso• Ainda implementa o
método que foi copiado de um outro pacote
• A responsabilidade sobre a propagação das correções ainda é do novo autor
meu.pacote.trataarquivos
ArquivoParaDownload DocumentosParaArquivoamento+List arquivos
GeradorDeArquivos
+gerarArquivoZip()
Exemplo
• Reuso de pacote• Responsabilidade
de versão e correções do autor original
• O novo autor não precisa conhecer o código do método reutilizado
java.util.zip
meu.pacote.trataarquivos
ArquivoParaDownload DocumentosParaArquivoamento+List arquivos
ZipOutputStream