Riesco a vedere le persone che usano boolean
di flag, specialmente in Controllers
/ Presenters
, per controllare il flusso di esecuzione. Ad esempio,
public void onButtonClicked() {
hasButtonClicked=true
// code here
}
Poi più tardi, in un metodo non correlato, ma sempre dello stesso Presenter
, questo flag viene utilizzato come segue:
public void onSomeOtherActionHappened() {
if (hasButtonClicked) {
// execute this
} else {
// execute that
}
}
Non solo rende più difficile testare l'unità, è anche difficile seguire l'intenzione della bandiera e quando cambia il suo stato.
Mi sa solo di odori. Normalmente sostituisco tali flag con Object
s che facilita realmente i test delle unità. Eppure, mi chiedo ancora, c'è qualcosa a cui l'umanità ha già pensato, sarebbe possibile evitare di usare tali flag per rappresentare uno stato, come affrontarlo in modo diverso e come spiegare perché odora. Grazie.