Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Estou com dúvida no curso de Design Patterns para Bons Programadores 2, no exercício 4 do capítulo Salvando estados anteriores e o Memento.

Os ifs encadeados no método avança seria um problema?

5 respostas

Oi Camila,

Essa sua pergunta dá pra responder de maneira geral! Se você tiver muitos ifs encadeados, isso será um problema sempre!

A sua tarefa é justamente perceber se aquele trecho de código onde escreveu o if tende a crescer e a pedir mais ifs. Se sim, refatore para um padrão. Se não, talvez não valha a pena refatorar para um padrão.

Faz sentido?

Entendi, obrigada Mauricio. Imaginei que o contrato não tende a ter muitos outros estados, seria por isso que não refatoramos no exercício?

solução!

É isso aí. A ideia é sempre balancear entre simplicidade e flexibilidade! Essa é a diferença do bom programador: ele lida bem com essa balança!

obrigada!

Camila, eu geralmente implemento o fluxo de status dentro do próprio enum, ou seja, o próprio status sabe quem vem antes e quem vem depois dele. Com isso eu evitos esses ifs.

public enum ContractStatus
{
    NEW,
    IN_PROGRESS,
    SIGNED,
    FINISHED;

    private ContractStatus previous, next;

    static
    {
        NEW.previous = NEW;
        NEW.next = IN_PROGRESS;

        IN_PROGRESS.previous = NEW;
        IN_PROGRESS.next = SIGNED;

        SIGNED.previous = IN_PROGRESS;
        SIGNED.next = FINISHED;

        FINISHED.previous = SIGNED;
        FINISHED.next = FINISHED;
    }

    public ContractStatus getPrevious()
    {
        return previous;
    }

    public ContractStatus getNext()
    {
        return next;
    }
}