Sto scrivendo un'implementazione Java di un gioco di carte, quindi ho creato un tipo speciale di raccolta che sto chiamando una zona. Tutti i metodi di modifica della raccolta di Java non sono supportati, ma esiste un metodo nell'API di zona, move(Zone, Card)
, che trasferisce una scheda dalla data zona a se stessa (realizzata mediante tecniche package-private). In questo modo, posso garantire che nessuna carta venga estratta da una zona e svanisca semplicemente; possono essere spostati solo in un'altra zona.
La mia domanda è, quanto è necessario questo tipo di codifica difensiva? È "corretto" e sembra la prassi giusta, ma non è come se l'API di zona diventasse parte di una biblioteca pubblica. È solo per me, quindi è come se stessi proteggendo il mio codice da me stesso quando potrei essere più efficiente semplicemente usando le Collezioni standard.
Quanto lontano dovrei prendere questa idea di zona? Qualcuno può darmi qualche consiglio su quanto dovrei pensare di preservare i contratti nelle classi che scrivo, specialmente per quelli che non saranno realmente disponibili al pubblico?