Apakah dianggap praktik yang buruk untuk membuang NotImplementedException
kode yang belum Anda tulis? Mungkin komentar TODO akan dianggap lebih aman?
Apakah dianggap praktik yang buruk untuk membuang NotImplementedException
kode yang belum Anda tulis? Mungkin komentar TODO akan dianggap lebih aman?
Jawaban:
Saya percaya NotImplementedException
ini sebenarnya praktik yang baik.
Memang, jika Anda lupa untuk menerapkan metode, dan Anda menggunakannya nanti dalam proyek Anda (dan percayalah, itu terjadi), Anda mungkin menghabiskan waktu lama untuk mencari kesalahan yang terjadi selangkah demi selangkah. Jika Anda memiliki pengecualian, program akan berhenti secara langsung, meminta pengecualian (jika Anda menangkap pengecualian, Anda akan menemukannya dengan cepat dengan melihat pengecualian apa yang Anda tangkap).
Saya akan merekomendasikan menggunakan komentar TODO yang NotImplementedException
dikombinasikan, dengan cara itu Anda menggabungkan bantuan GUI (dengan tugas-tugas dalam VS) dan keamanan program.
Untuk versi rilis, itu bahkan lebih penting menurut saya, karena dalam kebanyakan kasus Anda lebih suka program Anda crash daripada memiliki program yang tampaknya bekerja dengan baik tetapi menghasilkan hasil yang salah.
NotImplementedException
s dengan cara yang sama seperti komentar TODO. Saya pikir itu fitur yang bagus.
Itu tergantung pada filosofi umum Anda tentang kesalahan dan penanganan kesalahan. Saya adalah tipe pria "kesalahan berat": Saya akan memberikan pengecualian pada petunjuk sekecil apa pun bahwa ada sesuatu yang salah; Saya akan menegaskan semuanya; Jika ada kesalahan, jika sesuatu diharapkan ada di sana, dan itu tidak ada, atau jika ada sesuatu di sana, dan tidak seharusnya, seluruh alam semesta harus berhenti. Suara seruan windows harus berdering tidak enak melalui pengeras suara.
Ada orang lain yang lebih suka tidak terganggu dengan kesalahan. Jadi bagaimana jika kita mengirimkannya ke klien dan seluruh modul laporan hilang karena kita lupa kode itu, dan tidak ada dalam pengujian menyadarinya, karena aplikasi itu terlalu diam tentang hal itu? Lebih baik tidak melakukan apa pun, daripada melemparkan pengecualian ke wajah klien!
Menurut saya itu ide yang bagus. Biasanya saya melihat pengecualian itu dilemparkan oleh kode kerangka yang dihasilkan secara otomatis dari bentuk atau diagram atau sesuatu. Pengecualian mengingatkan saya untuk mengimplementasikan kode, dan memastikan bahwa akan ada kesalahan jika saya mencoba menggunakan fungsi yang telah diatur tetapi tidak pernah sepenuhnya diimplementasikan. Kadang-kadang saya akan mematikannya atau menggantinya dengan sesuatu yang kurang mungkin untuk menghentikan eksekusi (seperti mencetak peringatan ke konsol), tetapi saya menemukan bahwa itu berfungsi untuk saya.
Jika Anda sedang membangun perpustakaan yang orang lain akan menggunakan memiliki pengecualian ini lebih baik daripada alternatifnya, yang akan menjadi pengguna perpustakaan Anda memanggil fungsi dan bertanya-tanya mengapa tidak ada yang terjadi. Tentu saja, masih sangat buruk untuk memiliki pengecualian ini di perpustakaan yang dikirim tetapi lebih baik daripada kegagalan diam, IMO.
Saya pikir ini latihan yang bagus. Alternatifnya adalah menyebarkan nilai atau keadaan yang tidak valid, yang akan memengaruhi kode pengujian dan produksi.
Saya selalu menggunakan NotImplementedException
- itu untuk apa, setelah semua.
Ini terkait dengan konsep "gagal cepat": jika kode Anda melempar pengecualian, itu harus ditangkap sebelum pergi ke produksi. Jika produksi, setidaknya klien tahu bahwa perakitan tidak benar .
Jika kode mengembalikan nilai yang tidak berarti atau, untuk void
metode, tidak mengambil tindakan, maka konsumen kode Anda mungkin berpikir bahwa panggilan itu bermakna ketika tidak. Kemudian, nanti, ketika mereka mendapatkan beberapa kode yang benar, kode mereka mungkin rusak karena itu tergantung pada perilaku yang salah sebelumnya.
Proyek macam apa ini? Kerja atau rumah? Di rumah, lakukan apa pun yang Anda inginkan - apa pun yang terbaik mengingatkan Anda bahwa Anda harus menyelesaikan apa pun yang sedang Anda kerjakan.
Di tempat kerja, selesaikan menulisnya.
Saya tidak bisa melihat situasi di mana saya akan checkin kode yang dapat / akan merusak devs lain, QA atau membangun.
Saya melakukan keduanya saya tetapi harus melakukan autodocing doxygene saya dan kemudian melemparkan pengecualian. Dengan begitu jika orang tidak dapat diganggu ke RTFM setidaknya mereka akan dapat mengetahui mengapa program mereka macet, alih-alih bertanya-tanya mengapa ada fungsi yang dideklarasikan yang tidak mengembalikan nilai logis.