Я пишу реалізацію карткової гри на Java, тому створив спеціальний тип колекції, яку я називаю зоною. Усі способи модифікації колекції Java не підтримуються, але є метод в API Zone move(Zone, Card)
, який переміщує карту з даної зони до себе (виконується за допомогою пакетно-приватних методик). Таким чином я можу гарантувати, що жодна картка не виймається із зони та просто зникає; їх можна перенести лише в іншу зону.
Моє запитання полягає в тому, наскільки необхідний такий вид оборонного кодування? Це "правильно", і це здається правильною практикою, але це не так, як API Zone коли-небудь стане частиною якоїсь публічної бібліотеки. Це просто для мене, тому начебто я захищаю свій код від себе, коли, мабуть, я можу бути більш ефективною, просто використовуючи стандартні колекції.
Як далеко я повинен взяти цю ідею про зону? Хтось може дати мені поради щодо того, наскільки я повинен думати про збереження контрактів у класах, про які я пишу, особливо для тих, які насправді не стануть загальнодоступними?