Я пишу Java-реализацию карточной игры, поэтому я создал специальный тип Collection, который я называю Zone. Все методы модификации Java Collection не поддерживаются, но в Zone API есть метод move(Zone, Card)
, который перемещает карту из заданной зоны в себя (выполняется с помощью методов, закрытых для пакетов). Таким образом, я могу гарантировать, что никакие карты не будут удалены из зоны и просто исчезнут; они могут быть перемещены только в другую зону.
Мой вопрос: насколько необходим этот вид защитного кодирования? Это «правильно» и похоже на правильную практику, но это не значит, что Zone API когда-либо станет частью какой-то публичной библиотеки. Это только для меня, так что вроде как я защищаю свой код от себя, когда я, возможно, мог бы быть более эффективным, просто используя стандартные Коллекции.
Как далеко я должен взять эту идею Зоны? Может ли кто-нибудь дать мне несколько советов о том, как много я должен думать о сохранении контрактов в классах, которые я пишу, особенно для тех, которые на самом деле не будут общедоступными?