Estou escrevendo uma implementação Java de um jogo de cartas, então criei um tipo especial de coleção que estou chamando de zona. Todos os métodos de modificação do Java's Collection não são suportados, mas há um método na API da região move(Zone, Card)
, que move um cartão da região em questão para si (realizado por técnicas de pacote privado). Dessa forma, posso garantir que nenhum cartão seja retirado de uma zona e simplesmente desapareça; eles só podem ser movidos para outra zona.
Minha pergunta é: quão necessário é esse tipo de codificação defensiva? É "correto" e parece a prática correta, mas não é como se a API da Zona fizesse parte de alguma biblioteca pública. É só para mim, é como se eu estivesse protegendo meu código de mim mesmo quando provavelmente poderia ser mais eficiente usando apenas Coleções padrão.
Até onde devo levar essa ideia da Zona? Alguém pode me dar algum conselho sobre o quanto devo pensar em preservar os contratos nas aulas que escrevo, especialmente para aqueles que realmente não estarão disponíveis ao público?