Di mana tempat terbaik untuk memvalidasi parameter input fungsi: di pemanggil atau dalam fungsi itu sendiri?
Karena saya ingin meningkatkan gaya pengkodean saya, saya mencoba menemukan praktik terbaik atau beberapa aturan untuk masalah ini. Kapan dan apa yang lebih baik.
Dalam proyek saya sebelumnya, kami biasa memeriksa dan memperlakukan setiap parameter input di dalam fungsi, (misalnya jika tidak nol). Sekarang, saya telah membaca di sini dalam beberapa jawaban dan juga dalam buku Programmer Pragmatis, bahwa validasi parameter input adalah tanggung jawab pemanggil.
Jadi itu berarti, bahwa saya harus memvalidasi parameter input sebelum memanggil fungsi. Di mana-mana fungsi dipanggil. Dan itu menimbulkan satu pertanyaan: bukankah itu membuat duplikasi kondisi pemeriksaan di mana fungsi dipanggil?
Saya tidak tertarik hanya dalam kondisi nol, tetapi dalam validasi variabel input apa pun (nilai negatif ke sqrt
berfungsi, bagi dengan nol, kombinasi salah kode negara dan kode ZIP, atau apa pun)
Apakah ada beberapa aturan bagaimana memutuskan di mana memeriksa kondisi input?
Saya sedang memikirkan beberapa argumen:
- ketika memperlakukan variabel yang tidak valid dapat bervariasi, baik untuk memvalidasinya di sisi pemanggil (misalnya
sqrt()
fungsi - dalam beberapa kasus saya mungkin ingin bekerja dengan nomor kompleks, jadi saya memperlakukan kondisi di pemanggil) - ketika kondisi cek sama di setiap penelepon, lebih baik periksa di dalam fungsi, untuk menghindari duplikasi
- validasi parameter input pada pemanggil berlangsung hanya satu sebelum memanggil banyak fungsi dengan parameter ini. Oleh karena itu validasi parameter di setiap fungsi tidak efektif
- solusi yang tepat tergantung pada kasus tertentu
Saya harap pertanyaan ini bukan duplikat dari yang lain, saya mencari masalah ini dan saya menemukan pertanyaan serupa tetapi mereka tidak menyebutkan secara persis kasus ini.