Ketika saya memiliki banyak data yang perlu divalidasi, haruskah saya membuat kelas baru untuk tujuan validasi saja atau haruskah saya tetap menggunakan validasi dalam metode?
Contoh khusus saya merenungkan turnamen dan kelas acara / kategori: Tournament
dan Event
, yang menjadi model turnamen olahraga dan setiap turnamen memiliki satu atau banyak kategori.
Ada semua hal yang perlu divalidasi dalam kelas-kelas ini: para pemain harus kosong, harus unik, jumlah pertandingan yang harus dimainkan setiap pemain, jumlah pemain yang dimiliki, pertandingan yang telah ditentukan, dan sebagainya yang sangat besar termasuk banyak lagi aturan yang rumit.
Ada juga beberapa bagian yang perlu saya validasi secara keseluruhan, seperti bagaimana kelas terintegrasi satu sama lain. Misalnya, validasi kesatuan aPlayer
bisa baik-baik saja, tetapi jika suatu peristiwa memiliki pemain yang sama dua kali, itu adalah kesalahan validasi.
Jadi bagaimana dengan ini?
Jadi kita akan memiliki sesuatu seperti EventValidator
dengan Event
sebagai anggota, dan validate()
metode yang memvalidasi seluruh objek, ditambah metode tunggal untuk memvalidasi aturan semua anggota.
Kemudian, sebelum membuat instance objek yang valid, saya akan menjalankan validasi untuk mencegah nilai ilegal.
Apakah desain saya benar? Haruskah saya melakukan sesuatu yang berbeda?
Juga, haruskah saya menggunakan metode validasi pengembalian boolean? Atau hanya melempar pengecualian jika validasi gagal? Menurut saya pilihan terbaik adalah metode pengembalian boolean dan melemparkan pengecualian ketika objek instantiant, misalnya:
public Event() {
EventValidator eventValidator = new EventValidator(this);
if (!eventValidator.validate()) {
// show error messages with methods defined in the validator
throw new Exception(); // what type of exception would be best? should I create custom ones?
}
}