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 »