Os ifs encadeados no método avança seria um problema?
Os ifs encadeados no método avança seria um problema?
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?
É 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;
}
}