Ho un set abbastanza grande di booleans che sto controllando in javascript, e quindi li uso per modificare lo stato di un layout nella mia app React. L'intera faccenda è ingombrante, difficile da leggere, poco elegante e terribilmente amatoriale. Mi stavo chiedendo se ci fosse un modello migliore per gestire qualcosa di simile.
Esempio di snippet di codice (in coffeescript). Sostituite le variabili oggetto con ints per brevità:
setNeeded = _.contains(sessionInitialStates, codingSession.state)
sessionUpdating = codingSession.state is 'UPDATING'
sessionFailed = codingSession.state is 'FAILED'
setExtended = _.contains extStates, codingSession.state
setInReview = _.contains(reviewStates, controlSet.state) or
_.contains(controlSetSyncStates, controlSet.state)
sessionIsTagging = _.contains tagStates, codingSession.state
sessionComplete = codingSession.state is 'COMPLETE'
sessionIsNew = _.isEmpty(codingSession.state) or
codingSession.state is 'CREATED'
commError = controlSet.state is 'COMMUNICATION_ERROR'
if setNeeded and @props.creds
someVar = 1
else if _.contains(sessionInitialStates, codingSession.state) and
controlSet.state is 'PROCESSING_FAILED'
someVar = 2
else if codingSession.state is 'CONTROL_SET_GENERATION' and
controlSet.state is 'SELECTION_FAILED' and @props.creds
someVar = 3
else if !sessionIsTagging or !sessionComplete
if _.isEmpty @props.connector
someVar = 4
else if [email protected]
someVar = 5
else if sessionFailed
someVar = 6
else if sessionIsNew
someVar = 7
else if sessionUpdating
someVar = 8
else if setInReview and !setExtended
someVar = 9