Oggetti con tipo di dati booleani

1

Ho una collezione di oggetti, e per ognuno di essi ho bisogno di sapere se una condizione specifica è stata soddisfatta. Questa è una condizione ternaria, potrebbe non essere ancora testata, testata e fallita, o testata e superata. Attualmente ho una mappa in cui gli oggetti sono chiavi e i valori sono Boolean s. Il valore è null fino a test, e vero o falso in seguito. Tuttavia, mentre gli oggetti non dovrebbero mai cambiare durante questo processo, non sono immutabili e potrebbero teoricamente cambiare. Mi sento come se ci fosse un modo migliore per implementarlo, ma non so cosa sia. Qualche idea?

    
posta TBridges42 27.10.2015 - 02:30
fonte

2 risposte

3

Hai diverse opzioni:

  1. Invece di utilizzare Boolean nel codice corrente, crea un enum con valori UNTESTED , PASSED e FAILED . Questo è più descrittivo di un valore booleano ternario. Le enumerazioni hanno vantaggi che vanno oltre la leggibilità, come la possibilità di aggiungere metodi per fare cose.

  2. Se il test è poco costoso dal punto di vista computazionale, è sufficiente aggiungere un metodo all'oggetto da testare per restituire il risultato del test. Se il test è dispendioso dal punto di vista computazionale e il metodo per eseguire il test può essere definito molto, questo può comportare più danni che benefici.

  3. Salva il risultato del test sull'oggetto stesso. Se uno qualsiasi degli ingressi di test cambia, l'oggetto può oscurare il risultato del test, invalidando in modo efficace il risultato del test.

In tutti i casi applicherei comunque la modifica dell'opzione 1. Dovresti davvero usare un'enumerazione descrittiva piuttosto che una Boolean .

Vedi anche

risposta data 27.10.2015 - 02:55
fonte
0

Puoi usare Collections.unmodifiableMap(myMap); per restituire una vista immutabile della tua mappa, ma non sono sicuro di come si adatti al tuo codice corrente - non puoi aggiungere nuovi oggetti a una mappa non modificabile.

    
risposta data 27.10.2015 - 02:37
fonte

Leggi altre domande sui tag