Dari penerjemah. Perangkat lunak debug untuk banyak coders adalah tugas yang membosankan dan rutin. Tapi tetap saja tidak mungkin dilakukan tanpa debugging. Posting ini adalah terjemahan dari
artikel asli oleh Nick Karnik, di mana ia berbagi pengamatannya sendiri tentang kesalahan dan kekurangan dalam debugging, yang ditemukan tidak hanya di antara programmer pemula, tetapi juga di kalangan pro.
Kita semua menulis kode yang terkadang, sayangnya, menolak untuk berfungsi. Ini normal, hanya sebagian dari proses pengembangan. Jika program memberikan kesalahan, kadang-kadang Anda tidak tahu apa yang harus dilakukan selanjutnya dan bagaimana cara memperbaikinya. Jangan khawatir - semua masalah terpecahkan, dan bahkan coders yang paling berpengalaman pun memiliki kesalahan.
Skillbox merekomendasikan: Kursus tahunan praktis "Pengembang PHP dari awal hingga PRO . "
Kami mengingatkan Anda: untuk semua pembaca "Habr" - diskon 10.000 rubel saat mendaftar untuk kursus Skillbox apa pun menggunakan kode promosi "Habr".
Untuk meminimalkan kesalahan, perlu dikembangkan keterampilan pemrograman dan debugging.
Mereka sendiri dibagi menjadi dua jenis - logis dan sintaksis.
Kesalahan pengembang yang paling umum
Pesan Kesalahan Tidak AdaSalah satu skenario yang paling sulit adalah ketika aplikasi mogok dan tidak ada pesan tentang alasan apa yang terjadi. Agar dapat memperbaiki masalah dalam kode, Anda harus memahami apakah itu terjadi saat startup atau sudah dalam proses. Anda dapat mengetahuinya dengan menambahkan pendataan pesan aplikasi di awal kode.
Jika tidak ada log, kemungkinan besar program macet saat memuat, bahkan sebelum sesuatu mulai ditulis ke log.
Jika Anda memiliki log pesan, buka dan temukan kemungkinan penyebab crash. Untuk mempersempit pencarian, ada baiknya membuat program mencatat peristiwa utama dalam proses kerjanya. Dalam hal ini, masalahnya akan lebih mudah ditemukan.
Pesan kesalahan fobiaJika kita berbicara tentang frontend, maka kesalahan biasanya ditampilkan di aplikasi itu sendiri, di antarmuka pengguna, atau di konsol pengembang. Terkadang pesan dapat dilihat di backend menggunakan terminal atau di log peristiwa. Terlepas dari jenis kesalahan, pemula takut akan pesan semacam itu dan bahkan tidak membacanya.
Ini adalah alasan utama mengapa beberapa pengembang membutuhkan waktu lama untuk melakukan debug.
Pertama-tama, perlu untuk mempelajari kesalahan, menganalisis semuanya dengan cara yang paling menyeluruh.
Tidak ingin mempelajari log sistemBeberapa program menulis file log atau membuat log peristiwa. Semua ini hanyalah gudang informasi yang berguna. Jika Anda tidak dapat menemukan indikasi pasti penyebab kesalahan dalam log peristiwa, coba cari pesan tentang kegagalan atau, sebaliknya, keberhasilan peluncuran sesuatu (modul, layanan) .Ini akan membantu untuk memahami penyebab kesalahan.
Log penelusuran tidak adaMelacak membantu melacak proses program dan bekerja dengan data. Merekam pesan jejak saat perangkat lunak berjalan menyederhanakan proses debugging. Log penelusuran adalah cara sederhana untuk mempelajari cara kerja aplikasi Anda.
Ketidakmampuan untuk bekerja secara bertahapBanyak pengembang menulis kode dalam jumlah besar, setelah itu mereka dikompilasi dan diuji sebagai bagian dari aplikasi. Tetapi perlu diingat bahwa waktu untuk mencari bug dalam kode sebanding dengan volumenya.
Jika ada banyak perubahan, Anda harus menghabiskan banyak waktu mencari masalah yang tiba-tiba muncul. Yang terbaik adalah bekerja secara bertahap. Buat perubahan kecil, kompilasi kode, uji aplikasi - dan ulangi semua ini. Ketika Anda menerapkan perubahan dalam iterasi kecil, ini pada akhirnya mempercepat proses pembuatan aplikasi. Jika sesuatu tidak berhasil, Anda dapat dengan cepat melihat alasannya.
Setelah menulis kode saya, saya sering merevisinya untuk menyederhanakan penulisan.
Keengganan untuk melakukan pengujian otomatisTes unit dan otomatisasi pengujian ujung-ke-ujung memungkinkan Anda mengidentifikasi potensi kesalahan saat terjadi. Salah satu penyebab kesalahan adalah pengembang membuat ulang kode sebelum diuji secara menyeluruh, yaitu, perubahan tidak diuji secara otomatis.
Ketidakmampuan untuk bekerja dengan metode pengecualianJika Anda tidak dapat menentukan akar penyebab masalah Anda, Anda perlu menggunakan metode pengecualian. Anda dapat mengomentari blok kode baru untuk memeriksa apakah kesalahannya hilang. Ini membantu mendiagnosis masalah.
Selama debugging, Anda dapat merumuskan hipotesis tertentu dan mencoba untuk membuktikan atau membantahnya menggunakan metode yang diusulkan di atas.
Salin-tempel dengan StackOverflowSeringkali, pengembang menyalin dan menempel kode dari StackOverflow tanpa memiliki gagasan yang jelas tentang apa yang dilakukan bagian yang disalin. Tindakan semacam itu memiliki sejumlah konsekuensi negatif, beberapa di antaranya tersirat. Pastikan untuk memperhatikan apa yang Anda tambahkan, cobalah untuk memahami fungsi apa yang bertanggung jawab untuk pelaksanaan kode yang dimasukkan.
Ngomong-ngomong, sering ketika saya mengajukan pertanyaan tentang StackOverflow, saya menjawabnya sendiri sedikit kemudian, karena saya sedang merenungkan masalah selama proses penulisan.
Hal yang sama terjadi selama diskusi tentang masalah di tim Anda. Anda sendiri menemukan solusi untuk pertanyaan Anda, hanya karena Anda memikirkan penyebab masalahnya.
Keengganan untuk memeriksa kembali kodeSalah satu metode debug paling sukses yang saya tahu adalah mempelajari kode Anda - lagi dan lagi. Dalam beberapa kasus, menulis sepotong kode dari awal sangat membantu.
Ketidakmampuan untuk melacak panggilan fungsiPanggilan fungsi pembelajaran di aplikasi Anda juga terkadang membantu. Anda hanya perlu memeriksa variabel dan nilai yang diharapkan. Dalam prosesnya, Anda dapat menemukan area masalah dalam program Anda yang mengarah pada perilaku anehnya.
Ketidaktahuan DebuggerAnda pasti perlu belajar cara menggunakan debugger. Ini adalah investasi waktu terbaik. Semua IDE dilengkapi dengan alat debugging yang kuat yang bekerja dengan cara yang kurang lebih sama. Pelajari alat ini dan Anda akan menyelesaikan sebagian besar masalah Anda saat menulis kode.
Skillbox merekomendasikan: