Piszę implementację Java gry karcianej, więc stworzyłem specjalny typ kolekcji, którą nazywam Strefą. Wszystkie metody modyfikacji kolekcji Java są nieobsługiwane, ale w API strefy istnieje metoda move(Zone, Card)
, która przenosi kartę z danej strefy do siebie (osiągane przy pomocy technik pakietowych). W ten sposób mogę zapewnić, że żadne karty nie zostaną wyjęte ze strefy i po prostu znikną; można je przenieść tylko do innej strefy.
Moje pytanie brzmi: jak konieczne jest tego rodzaju kodowanie obronne? Jest „poprawny” i wydaje się, że jest to właściwa praktyka, ale nie jest tak, że Zone API będzie kiedykolwiek częścią biblioteki publicznej. To jest tylko dla mnie, więc to trochę tak, jakbym chronił swój kod przed samym sobą, gdy prawdopodobnie mógłbym być bardziej wydajny, korzystając ze standardowych kolekcji.
Jak daleko powinienem zająć się tą strefą? Czy ktoś może mi doradzić, jak bardzo powinienem pomyśleć o zachowaniu umów na zajęciach, które piszę, szczególnie dla tych, które tak naprawdę nie będą publicznie dostępne?