Sto scrivendo un'implementazione Java di un gioco di carte, quindi ho creato un tipo speciale di Collection che sto chiamando Zone. Tutti i metodi di modifica di Java's Collection non sono supportati, ma esiste un metodo nell'API Zone move(Zone, Card)
, che sposta una scheda da una determinata zona a se stessa (realizzata mediante tecniche pacchetto-private). In questo modo, posso garantire che nessuna carta sia 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 pratica giusta, ma non è come se l'API di zona farà mai parte di alcune librerie pubbliche. È solo per me, quindi è un po 'come se stessi proteggendo il mio codice da me stesso quando probabilmente avrei potuto essere più efficiente usando solo le raccolte standard.
Quanto lontano dovrei portare 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?