Debugging pada Kontes Pemrograman

Debugging dan implementasi adalah dua hal yang tidak bisa dipisahkan. Seberapa baik kita bisa melakukan debugging sangat (meskipun bukan seluruhnya) tergantung dari seberapa baik kita melakukan implementasi. Jadi, tips-tips debugging akan dimulai dari bagaimana melakukan implementasi agar program kita bisa di-debug dengan baik. Berikut ini beberapa pegangan saya waktu implementasi (towards debuggable code) ketika kontes. Tentu saya tidak berharap semua orang setuju atau cocok dengan tips-tips ini:

  1. Buat program yang rapi, jangan berantakan. Berikan spasi dan new line seperlunya. Hindari untuk menggabungkan beberapa statement di satu baris, kecuali kita sudah sangat terbiasa. Debugging adalah kegiatan yang dilakukan manusia, sehingga agar bisa di-debug, program yang kita buat juga harus “manusiawi”.
  2. Coding itu tidak perlu sependek mungkin, yang penting bisa kita pahami dengan mudah. Tentu program yang pendek cenderung lebih sederhana. Tetapi kalau memperpendek program menyebabkan program itu jadi rumit, lebih baik dibiarkan panjang.
  3. Setiap statement harus ditulis sesederhana mungkin. Hindari penggunaan trik-trik “cerdas” yang tidak bisa langsung dipahami dalam sekali baca.
  4. Buat program semodular mungkin dengan fungsi-fungsi sesederhana mungkin. Apabila suatu fungsi terlihat panjang, pecah menjadi dua atau lebih fungsi.
  5. Sebelum mengetik (coding), pastikan kita sudah punya rancangan lengkap dari struktur algoritma yang akan kita implementasikan. Ini akan sangat membantu untuk membuat program yang rapi.

Debugging adalah kegiatan yang sangat membutuhkan pengalaman. Pengalaman berasal dari jam terbang. Jam terbang berasal dari latihan dan kontes. Semakin banyak program yang pernah kita buat, semakin kita menyadari bug-bug apa yang sering kita buat (setiap orang punya frequent bug yang berbeda-beda) sehingga ketika melakukan debugging, kita bisa mulai mencari bug-bug yang paling sering kita buat.

Tanpa keberuntungan, implementasi tanpa bug sama sekali hanyalah “mitos” yang tidak mungkin, kecuali programnya sangat sederhana. Memang tingkat seberapa sederhana sebuah program adalah berbeda satu orang dengan yang lain. Bagi beberapa orang, suatu program yang terlihat kompleks di mata orang lain masih dianggap sederhana. Ketika melakukan implementasi, memang kita harus mengusahakan untuk membuat sesedikit mungkin bug. Akan tetapi, setelah selesai melakukan implementasi kita “selalu” perlu melakukan debugging, sesederhana apapun program kita. Menulis program yang melewatkan salah satu tahap dari compile, debugging, ataupun testing menurut saya sangat ceroboh.

Debugging yang paling efektif untuk saya adalah membaca program yang kita ketik secara sistematis. Mulai dari program utama (main) ke masing-masing fungsinya. Masing-masing modul (fungsi, prosedur, class, dll) dibaca dan diverifikasi kebenarannya, kemudian hubungan antar modul diverifikasi kebenarannya. Normalnya, saya melakukan testing dan memasang print di mana-mana atau melakukan tracing hanya untuk memastikan tidak ada kesalahan, bukan untuk mencari kesalahan. Apabila ditemukan kesalahan, saya akan membaca ulang program saya lagi. Melakukan tracing untuk mencari kesalahan hanya dilakukan pada “desperate situation”, misalnya program terlalu kompleks atau masih ada bug meskipun program itu terlihat tidak memiliki bug berdasarkan pemahaman kita dari pembacaan code tersebut.

Ah, dan terakhir… do testing.

Leave a Reply

Your email address will not be published. Required fields are marked *