Testando código legado: o adendo!

Este post é um complemento ao post anterior “Testando código legado”. Portanto, recomendo a leitura daquele antes de seguir adiante (sugiro que o mantenha aberto).

Lido? Vamos, então, discutir melhor a solução apresentada.

REVISANDO A SOLUÇÃO

Primeiramente, vamos entender melhor o que estamos tentando testar na classe “RelatorioDeDespesas”, utilizada como exemplo. Continue lendo »

Anúncios

Se não está quebrado, não conserte. Certeza?

Fala, galera!

Li há alguns dias o capítulo 5 do livro do Uncle Bob Agile Principles, Patterns and Practices in C# e resolvi, neste pequeno post, compartilhar com vocês 2 parágrafos do início do capítulo. São coisas nas quais eu acredito demais. Aliás, muitas vezes que leio algo do Uncle Bob, acabo pensando “meu herói!!!!” 🙂

Abaixo, segue a tradução, com pequenas adaptações:

“Cada módulo de um software tem 3 funções:

1) A função que ele desempenha durante a execução. Esta função é a razão de existência do módulo.

2) Proporcionar mudança. Quase todos os módulos de um software mudarão em algum momento de seu tempo de vida e é responsabilidade dos desenvolvedores garantir que tais mudanças sejam as mais simples possíveis de se fazer. Um módulo difícil de mudar está quebrado e precisa de conserto, mesmo que esteja funcionando.

Continue lendo »

Template Method: Refatorando com design patterns

Olá, pessoal

Retornando aos design patterns, desta vez falarei sobre o padrão Template Method. No entanto, neste post, utilizarei uma abordagem diferente: ao invés de definir o padrão e dar um exemplo, vou mostrar como refatorar código com o auxílio do padrão, melhorando o design de uma aplicação já existente.

Vamos codar então!

O CENÁRIO

Imagine que na aplicação que esteja dando manutenção exista a classe abaixo, responsável por fazer o cálculo de uma prestação de um contrato:

public class Prestacao
{
    public decimal Calcular(decimal valorTotal, int numeroDeParcelas)
    {
        var valorPrincipal = valorTotal / numeroDeParcelas;

        var valorDaTaxaAdministrativa = valorPrincipal * 0.01m;

        var valorDoSeguro = valorPrincipal * 0.015m;

        return valorPrincipal + valorDaTaxaAdministrativa + valorDoSeguro;
    }
}

Continue lendo »