Ada diskusi yang terjadi di comp.lang.c ++. Dimoderasi tentang apakah atau tidak, yang dalam C ++ hanya ada di debug build secara default, harus disimpan dalam kode produksi atau tidak.
Jelas, setiap proyek adalah unik, jadi pertanyaan saya di sini adalah tidak begitu banyak apakah pernyataan harus disimpan, tetapi di mana kasus ini dianjurkan / bukan ide yang baik.
Maksud saya, maksud saya:
- Pemeriksaan run-time yang menguji suatu kondisi yang, ketika salah, mengungkapkan bug dalam perangkat lunak.
- Suatu mekanisme dimana program dihentikan (mungkin setelah pekerjaan pembersihan yang sangat minim).
Saya tidak perlu berbicara tentang C atau C ++.
Pendapat saya sendiri adalah bahwa jika Anda adalah programmer, tetapi tidak memiliki data (yang merupakan kasus dengan kebanyakan aplikasi desktop komersial), Anda harus tetap menggunakannya, karena pernyataan yang gagal menunjukkan bug, dan Anda tidak boleh pergi aktif dengan bug, dengan risiko merusak data pengguna. Ini memaksa Anda untuk menguji dengan kuat sebelum mengirim, dan membuat bug lebih terlihat, sehingga lebih mudah dikenali dan diperbaiki.
Apa pendapat / pengalaman Anda?
Bersulang,
Carl
Lihat pertanyaan terkait di sini
Tanggapan dan Pembaruan
Hei Graham,
Pernyataan adalah kesalahan, murni dan sederhana dan karenanya harus ditangani seperti itu. Karena kesalahan harus ditangani dalam mode rilis maka Anda tidak benar-benar membutuhkan pernyataan.
Itu sebabnya saya lebih suka kata "bug" ketika berbicara tentang pernyataan. Itu membuat segalanya lebih jelas. Bagi saya, kata "kesalahan" terlalu kabur. File yang hilang adalah kesalahan, bukan bug, dan program harus menghadapinya. Mencoba untuk menunjukkan referensi null pointer adalah bug, dan program harus mengakui bahwa ada sesuatu yang berbau keju buruk.
Oleh karena itu, Anda harus menguji pointer dengan penegasan, tetapi keberadaan file dengan kode penanganan kesalahan yang normal.
Sedikit di luar topik, tetapi poin penting dalam diskusi.
Sebagai kepala-up, jika pernyataan Anda masuk ke debugger ketika gagal, mengapa tidak. Tetapi ada banyak alasan file tidak bisa ada yang sepenuhnya di luar kendali kode Anda: hak baca / tulis, disk penuh, perangkat USB dicabut, dll. Karena Anda tidak memiliki kontrol atasnya, saya merasa pernyataan bukan cara yang tepat untuk menghadapinya.
Carl
Thomas,
Ya, saya memiliki Kode Lengkap, dan harus mengatakan saya sangat tidak setuju dengan saran khusus itu.
Katakan pengalokasi memori khusus Anda mengacaukan, dan nol sepotong memori yang masih digunakan oleh beberapa objek lain. Kebetulan saya nol pointer yang objek ini dereferensi secara teratur, dan salah satu invarian adalah bahwa pointer ini tidak pernah nol, dan Anda memiliki beberapa pernyataan untuk memastikan itu tetap seperti itu. Apa yang Anda lakukan jika pointer tiba-tiba nol. Anda hanya jika () di sekitarnya, berharap itu berfungsi?
Ingat, kita berbicara tentang kode produk di sini, jadi tidak ada pembobolan terhadap debugger dan memeriksa status lokal. Ini adalah bug nyata pada mesin pengguna.
Carl