Saya sedang menulis implementasi Java dari permainan kartu, jadi saya membuat tipe khusus Collection yang saya sebut Zone. Semua metode modifikasi Koleksi Java tidak didukung, tetapi ada metode di Zone API move(Zone, Card)
, yang memindahkan Kartu dari Zona yang diberikan ke dirinya sendiri (dilakukan dengan teknik paket-pribadi). Dengan cara ini, saya dapat memastikan bahwa tidak ada kartu yang dikeluarkan dari zona dan hilang begitu saja; mereka hanya bisa dipindahkan ke zona lain.
Pertanyaan saya adalah, seberapa perlukah pengkodean defensif semacam ini? Ini "benar," dan rasanya seperti praktik yang tepat, tetapi bukan seperti Zone API yang akan menjadi bagian dari beberapa perpustakaan umum. Ini hanya untuk saya, jadi sepertinya saya melindungi kode saya dari diri saya ketika saya mungkin bisa lebih efisien dengan hanya menggunakan Koleksi standar.
Seberapa jauh saya harus mengambil ide Zona ini? Adakah yang bisa memberi saya nasihat tentang seberapa banyak saya harus berpikir tentang menjaga kontrak dalam kelas yang saya tulis, terutama untuk yang tidak benar-benar tersedia untuk umum?