Bagaimana, ketika mengembangkan proyek berukuran sedang, apakah Anda mengidentifikasi, membuat, dan memelihara kode kesalahan?
Saya seumur hidup tidak bisa memikirkan metode yang sederhana dan bersih untuk melakukannya. Beberapa ide saya mengubah nama kelas dan nama metode menjadi string integer, tetapi itu adalah cara yang lama untuk ditampilkan kepada pengguna di atas fakta bahwa nama metode dan nama kelas dapat berubah (mudah-mudahan tidak!). Yang lain hanya menggunakan sistem log yang bertambah (mis. Kapan pun saya membuat pesan kesalahan baru, tambahkan saja 1 ke id pesan kesalahan terakhir). Tapi itu sama sekali tidak terorganisir.
Untuk lebih spesifik saya berbicara tentang kode kesalahan seperti:
Error 401 Unauthorized.
error-messages
ahodder
sumber
sumber
Jawaban:
Tidak.
Kode kesalahan adalah sebuah anakronisme, mereka berasal dari masa lalu ketika output sangat sulit dan mahal, dan satu-satunya cara untuk memberi sinyal kondisi kesalahan mungkin melalui sekelompok lampu panel depan:
Hari-hari ini, kami memiliki penanganan pengecualian matang yang dibangun ke hampir setiap bahasa utama. Gunakan. Berikan informasi pengguna mereka dapat bekerja dengan; jangan ganggu mereka dengan bla-bla teknis, tetapi katakan secara kasar apa yang salah dan apa yang bisa mereka lakukan. Untuk login, cukup berikan nama deskriptif pengecualian Anda, dan catat namanya. Lebih mudah diingat, dan juga lebih mudah ditemukan menggunakan grep atau alat pencarian serupa.
Pengecualian, tentu saja, ketika Anda memprogram untuk situasi di mana output masih sulit dan mahal, seperti embedded system atau protokol jaringan. HTTP masih menggunakan kode respons numerik karena sangat mudah diurai secara efisien - dalam beberapa situasi, membaca hanya digit pertama sudah cukup memberi tahu Anda, dan Anda dapat membuang sisa paket.
sumber
Anda harus memeriksa bagaimana kode kesalahan / status diatur dalam protokol umum seperti HTTP . Mereka memiliki rentang yang berbeda untuk berbagai jenis status / kesalahan. Ini memudahkan pengguna untuk mengidentifikasi kode status yang tidak dikenal, dan bagi pengembang untuk menetapkan kode untuk jenis kesalahan baru yang belum pernah ditangani sebelumnya.
sumber
Maaf, mengapa menggunakan kode kesalahan sama sekali?
Tangkap pengecualian, catat dan tawarkan untuk mengirim laporan jika program tidak dapat pulih .
(Dengan asumsi bahasa Anda mendukung pengecualian.)
Satu-satunya informasi yang relevan yang mungkin membantu Anda memperbaiki bug adalah jejak tumpukan yang tidak Anda dapatkan dengan kode kesalahan. (Saya juga berasumsi Anda ingin menggunakan kode kesalahan untuk laporan kesalahan dan tidak membuangnya ke wajah pengguna.)
sumber
Saya akan menganggap konteks prosedural (C). Jika Anda memiliki objek, objek kesalahan biasanya lebih baik, apakah pengecualian atau tidak.
Anda harus menggunakan kode kesalahan lokal untuk setiap modul. Untuk pustaka Anda dapat memiliki tajuk khusus yang mencantumkan kode kesalahan, dengan angka 1, 2 dll (atau -1, -2 jika Anda suka). Pastikan untuk selalu mengembalikan salah satu kode ini, mis. Terjemahkan
errno
ke dalam kode Anda sendiri. Jika Anda memiliki banyak lapisan modul, terjemahkan pada setiap langkah (atau tentukan rentang untuk kesalahan yang lebih dalam, misalnya nilai 1001 - 1050 berasal dari modul lainnya).Penting juga bahwa Anda menyediakan sarana untuk menerjemahkan kode menjadi string. Anda tidak boleh hanya melaporkan kode, yang hanya mengarah pada frustrasi. Sebenarnya hampir semua kode dalam aplikasi Anda harus datang dengan fungsi terjemahan string. Misalnya libc biasanya memiliki
strerror
danstrsignal
, tetapi sayangnya kurangstrwaitstatus
.sumber