Estoy escribiendo una implementación Java de un juego de cartas, así que creé un tipo especial de Colección que llamo Zona. Todos los métodos de modificación de la Colección de Java no son compatibles, pero hay un método en la API de la Zona, move(Zone, Card)
, que mueve una Tarjeta de la Zona dada a sí misma (realizada mediante técnicas de paquetes privados). De esta manera, puedo asegurar que ninguna tarjeta se saque de una zona y simplemente desaparezca; Solo se pueden mover a otra zona.
Mi pregunta es, ¿qué tan necesaria es esta clase de codificación defensiva? Es "correcto" y se siente como la práctica correcta, pero no es como si la API de Zone alguna vez formará parte de alguna biblioteca pública. Es solo para mí, así que es como si estuviera protegiendo mi código de mí mismo cuando probablemente podría ser más eficiente con solo usar Colecciones estándar.
¿Hasta dónde debo llevar esta idea de Zona? ¿Alguien me puede dar algún consejo sobre cuánto debería pensar en preservar los contratos en las clases que escribo, especialmente para aquellos que realmente no estarán disponibles públicamente?