J'écris une implémentation Java d'un jeu de cartes, alors j'ai créé un type spécial de Collection que j'appelle une Zone. Toutes les méthodes de modification de la collection Java ne sont pas prises en charge, mais il existe une méthode dans l'API de zone move(Zone, Card)
, qui déplace une carte de la zone donnée vers elle-même (à l'aide de techniques de paquet privé). De cette façon, je peux m'assurer qu'aucune carte n'est sortie d'une zone et qu'elle ne disparaisse tout simplement. ils ne peuvent être déplacés que vers une autre zone.
Ma question est la suivante: dans quelle mesure ce type de codage défensif est-il nécessaire? C'est "correct" et cela semble être la bonne pratique, mais ce n'est pas comme si l'API Zone faisait partie d'une bibliothèque publique. C'est juste pour moi, alors c'est un peu comme si je protégeais mon code alors que je pourrais probablement être plus efficace en utilisant simplement Collections standard.
Jusqu'où dois-je prendre cette idée de zone? Quelqu'un peut-il me donner des conseils sur la mesure dans laquelle je devrais penser à préserver les contrats dans les classes que j'écris, en particulier pour ceux qui ne seront pas vraiment accessibles au public?