Saya biasanya bekerja dengan peringatan dan pemberitahuan PHP, karena saya bekerja pada banyak proyek di mana sudah dalam produksi langsung. Sekarang, jika saya menghidupkan peringatan dan pemberitahuan di situs web produksi langsung ini, mereka akan dipenuhi dengan mereka.
Proyek-proyek yang saya kerjakan di rumah, di lokal, saya biasanya mencoba untuk menghilangkan SEMUA peringatan dan pemberitahuan. Terkadang, tidak ada solusi untuk tidak memiliki pemberitahuan, jadi saya harus berurusan dengan melihat pemberitahuan itu sampai saya memutuskan untuk mematikannya sama sekali.
Pada akhirnya, saya tidak tahu apakah saya membuang-buang waktu untuk menghilangkan semua peringatan dan pemberitahuan, atau bahwa saya benar-benar melakukan ini untuk kebaikan yang lebih besar.
Karena itu pertanyaan saya, apakah praktik yang baik untuk menghindari peringatan dan pemberitahuan sama sekali, atau apakah itu benar-benar tidak masalah?
@
.error_reporting(0);
? Saya selalu menggunakanerror_reporting(E_ALL);
dan satu-satunya perbedaan antara pembangunan dan produksiini_set('display_errors', 'on');
vsini_set('display_errors', 'off');
. Saya selalu berusaha memperbaiki pemberitahuan dan peringatan saat kode itu masih segar di pikiran saya. Saya sering mencatat log pada sistem produksi saya untuk melihat apakah ada peringatan dan pemberitahuan tambahan yang mungkin saya lewatkan.@
. Setelah bertahun-tahun pemrograman PHP, saya belum menggunakan operator itu. Tidak sekali. Tidak pernah. Tidak hanya menyembunyikan potensi masalah, tetapi juga memiliki dampak kinerja: di belakang layar, PHP mematikan pelaporan kesalahan sebelum memanggil kode -> memanggil kode -> mengembalikannya ke nilai aslinya. Langkah-langkah ini mahal jika Anda memiliki lusinan atau ratusan@
kode Anda.Jawaban:
Anda harus selalu mengaktifkan peringatan ke tingkat sepenuhnya dalam pengembangan, pengujian, dan QA, tetapi tidak dalam produksi. Sebenarnya, jika itu adalah aplikasi dogfooding, yaitu aplikasi yang Anda gunakan sendiri, maka Anda juga harus membuatnya dalam produksi.
Pada dasarnya: minta mereka dihidupkan dalam kasus-kasus di mana orang yang melihatnya berada dalam posisi untuk melakukan sesuatu terhadap mereka (pengembang dalam pengembangan dan pengujian dapat memperbaikinya sendiri, tester di QA dapat mengajukan bug, dan jika pengembang itu juga pengguna, maka ia juga dapat memperbaikinya dalam produksi), tetapi jangan nyalakan ketika orang yang melihat tidak bisa berbuat apa-apa terhadap mereka (pengguna dalam produksi, yang bahkan tidak tahu cara memprogram).
Idealnya, Anda juga ingin mengaktifkan memperlakukan peringatan sebagai kesalahan, tetapi itu hanya bekerja jika tidak ada yang memulai ;-) Tetapi ingatlah ini sebagai tujuan! Jika dimungkinkan untuk mengaktifkan / menonaktifkan ini berdasarkan per-file, aktifkan untuk semua file baru, dan hidupkan untuk semua file bebas-peringatan, dan jangan pernah mematikannya lagi setelah dihidupkan.
Jadi, apa yang harus dilakukan tentang kelebihan?
Anda membuat daftar setiap peringatan dan pemberitahuan, dan kemudian mematuhi aturan berikut:
Catatan: keduanya mengharuskan Anda memiliki semacam database log dan mekanisme penyaringan log. Perhatikan juga, bahwa "log database" dan "mekanisme penyaringan log" hanya bisa berupa file teks dan
grep
.Ini adalah bagian yang penting. Tanpa database, Anda tidak akan tahu kapan Anda menambahkan peringatan baru, dan tanpa pemfilteran, Anda masih memiliki masalah kelebihan.
Catatan # 2: ini tidak hanya berfungsi untuk peringatan, tetapi juga berfungsi untuk pemeriksa gaya, metrik kompleksitas, cakupan kode, alat analisis statis, dan sebagainya. Pada dasarnya:
Ini memungkinkan Anda untuk dengan mudah memprioritaskan: kode yang sering diedit dan karenanya perlu mudah dibaca dan dipelihara, akan menjadi lebih baik seiring waktu. Kode yang tidak sering disentuh, tidak akan menjadi lebih baik, tetapi tidak apa-apa, karena tidak ada yang perlu melihatnya. Dan , setidaknya itu tidak akan bertambah buruk.
Tentu saja, tidak ada yang menghentikan Anda dari mengalokasikan waktu khusus untuk melakukan apa-apa selain memburu dan membunuh peringatan. Hanya sesering ini, ini tidak layak secara ekonomi, dan tugas Anda sebagai insinyur adalah mengingatnya. "Seorang insinyur adalah orang yang bisa membangun dengan dolar, apa yang bisa dibuat orang bodoh dengan dua."
sumber
Jika peringatan dan pemberitahuan berasal dari kode Anda, pasti perbaiki. Dari pengalaman saya, di 95% mungkin jinak, tetapi 5% menyoroti masalah nyata yang dapat menyebabkan banyak waktu yang dihabiskan untuk mengejar.
Jika mereka berasal dari kode pihak ketiga yang harus Anda gunakan untuk satu alasan atau yang lain, Anda umumnya tidak punya banyak pilihan.
Ini adalah pertanyaan yang berbeda jika basis kode legacy Anda benar-benar besar, maka Anda dapat memperlakukan kode legacy sebagai pihak ketiga, tetapi mengharuskan kode baru itu bebas peringatan.
sumber
using
pernyataan Anda ...Itu penting. Peringatan mungkin tidak mematahkan tes Anda atau bahkan muncul di alam liar untuk sementara waktu - tetapi itu bisa menjadi gejala bug yang menjulang. Saat ini saya mengembangkan terutama di C # / C ++ dan memiliki strategi yang jelas untuk menyingkirkan dan menjaga peringatan dari basis kode kami. Untungnya itu bukan ilmu roket =).
Jika bahasa tempat Anda bekerja memiliki kemampuan untuk memperlakukan peringatan sebagai kesalahan dan memiliki tingkat peringatan variabel, saya akan melakukan hal berikut:
Saya mendapati bahwa ini tidak hanya berfungsi sebagai peringatan dari kode saya - tetapi juga mencegahnya .
sumber