Un'app a cui sto lavorando è progettata con MVC. I componenti spesso interagiscono tra loro passando costanti int, che poi devono essere interpretate con dichiarazioni if
. Mi chiedo se questo sia considerato un cattivo design OO. (Non specificamente con MVC, ma in generale).
Ad esempio:
Quando l'utente fa clic su un pulsante specifico, al controller viene indicata la vista controller.somethingHappened(Controller.SOME_INT_VALUE);
La vista usa un valore int costante nel controller come un messaggio per dire cosa è successo. Il controller deve quindi avere un sacco di istruzioni if
per interpretare il messaggio dalla vista. Per esempio:.
public void somethingHappened(int message){
if(message == AN_INT_VALUE) doSomething();
if(message == ANOTHER_INT_VALUE) doSomeThingElse();
if(message == A_DIFFERENT_INT_VALUE) doAnotherThing();
}
Di conseguenza il controller passa un altro valore int nel modello, come un messaggio per fare qualcosa. Cioè model.doSomething(Model.SOME_INT_VALUE);
.
Quali forze per modellare hanno anche un sacco di dichiarazioni if
:
public void doSomething(int message){
if(message == AN_INT_VALUE) doSomething();
if(message == ANOTHER_INT_VALUE) doSomeThingElse();
if(message == A_DIFFERENT_INT_VALUE) doAnotherThing();
}
In questo modo sia il controller che il modello hanno un sacco di if
s per interpretare i messaggi ricevuti.
Questo è considerato brutto e / o cattivo design? Dovrei provare a passare oggetti reali in metodi, o effettuare chiamate di metodo più specifiche - invece di passare costanti che devono essere interpretate con un gruppo di if
s? O questa pratica consiste nell'usare molte costanti come messaggi considerati ragionevoli?
Se è considerato un cattivo design, come posso evitare questo?
(Nota: ai fini di questa domanda mi riferisco anche alle enumerazioni) .