Lapisan Validasi: Model vs Instance

Validasi model menjawab "apakah rancangan ini masuk akal", validasi instance menjawab "apakah data ini cocok". Mencampur keduanya bikin pesan error menyesatkan.

2026-09-10 · validation, schema, design

Dua pertanyaan berbeda sering dijawab oleh satu fungsi, dan hasilnya pesan error yang menunjuk tempat salah.

Validasi model berjalan di atas definisi: apakah ada state awal, apakah setiap transisi menunjuk state yang ada, apakah ada state tak terjangkau. Ini soal rancangan, bukan data. Gagal di sini berarti desainnya salah, bukan inputnya.

Validasi instance berjalan di atas data konkret terhadap definisi: apakah nilai ini bertipe benar, apakah field wajib terisi. Gagal di sini berarti data buruk, dan pesannya harus menunjuk field yang salah.

Mencampur keduanya menghasilkan fungsi yang mengembalikan daftar masalah tanpa konteks. Pemanggil tidak tahu apakah harus memperbaiki model atau memperbaiki input.

Pola yang bekerja: dua fungsi terpisah, dua tipe hasil terpisah. Validasi model mengembalikan masalah struktural (biasanya fatal). Validasi instance mengembalikan daftar issue per-field (biasanya bisa dikumpulkan semua sekaligus, bukan berhenti di yang pertama).

Konsekuensi praktis: validasi instance tidak pernah throw. Ia mengembalikan daftar, mungkin kosong. Validasi model boleh throw karena model rusak berarti programmer salah, dan itu tidak bisa dipulihkan saat runtime.

← Semua Knowledge