Download - Rep reuse release equivalence principle

Transcript
Page 1: Rep reuse release equivalence principle

Princípio da Equivalência de Versão/Reuso

Davidson MarquesJarison Araújo

Page 2: Rep reuse release equivalence principle

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.

Page 3: Rep reuse release equivalence principle

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

Page 4: Rep reuse release equivalence principle

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

Page 5: Rep reuse release equivalence principle

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()

Page 6: Rep reuse release equivalence principle

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()

Page 7: Rep reuse release equivalence principle

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