Tôi đang viết một triển khai Java của một trò chơi bài, vì vậy tôi đã tạo ra một loại Bộ sưu tập đặc biệt mà tôi đang gọi là Khu vực. Tất cả các phương thức sửa đổi của Bộ sưu tập của Java đều không được hỗ trợ, nhưng có một phương thức trong API khu vực move(Zone, Card)
, giúp di chuyển Thẻ từ Vùng đã cho sang chính nó (được thực hiện bằng các kỹ thuật riêng tư gói). Bằng cách này, tôi có thể đảm bảo rằng không có thẻ nào được đưa ra khỏi một khu vực và chỉ đơn giản là biến mất; họ chỉ có thể được chuyển đến khu vực khác.
Câu hỏi của tôi là, loại mã hóa phòng thủ này cần thiết như thế nào? Đó là "chính xác", và nó cảm thấy như một cách thực hành đúng, nhưng nó không giống như API khu vực sẽ trở thành một phần của một số thư viện công cộng. Nó chỉ dành cho tôi, vì vậy nó giống như tôi đang bảo vệ mã của mình khỏi chính mình khi tôi có thể hiệu quả hơn bằng cách chỉ sử dụng Bộ sưu tập tiêu chuẩn.
Tôi nên lấy ý tưởng Khu vực này bao xa? Bất cứ ai cũng có thể cho tôi một lời khuyên về việc tôi nên suy nghĩ bao nhiêu về việc giữ các hợp đồng trong các lớp tôi viết, đặc biệt là cho những người không thực sự được công khai?