Swiss Army Si Tukang Debug

Artikel ini ditulis untuk mereka yg merasa overkill kalau pakai xdebug di php

Awal mula

Selain tukang sayur, tukang gorengan, dan tukang bangunan. Ada lagi satu tukang di dunia ini yang tidak kalah penting jasanya. Dialah si tukang debug. Tukang debug kerjanya memahami alur, mencari kutu, membunuh kutu. Urutannya gak tentu sih, tergantung gimana situasi dan kondisi di negeri ini #adaApaIni. Kebetulan saya termasuk salah satunya. Perkakas tukang debug umumnya sebagai berikut :

1. echo($var),
2. var_dump($vir),
3. print_r($vur),
4. print “<pre>”; $ver;

Kalau debugnya satu dua kali tentu asik-asik aja. Tapi kalau sudah berulang-ulang jadinya kesel juga. Tambah kesel ketika variabel yg dimainkan berbentuk array atau objek, berdimensi banyak, jumlahnya lebih dari satu pula. Meskipun beberapa IDE memberikan fitur snippet dengan pintasan keyboard, tetep aja kita harus pijit lebih dari satu tombol demi memunculkan sebuah fungsi untuk nge-debug.

Contoh kasus variabel berikut :

Andai $tempatWisata kita debug dengan print_r, maka bentuk keluaran yang didapat adalah seperti ini:

Berantakan dan tidak manusiawi. Karena itu tukang debug umumnya langsung menggunakan perkakas tipe keempat. Fungsi debugnya ditambahkan bumbu “<pre>” agar keluaran tampak rapih. Kira-kira format keluarannya menjadi seperti ini :

Sekilas memang rapih, namun panjangnya nauzubilah. Bom waktu akan meledak bila variabel yg didebug lebih dari satu. Misalnya ikut pula teman-temannya yg bernama $tempatBersejarah, $tempatHoror, $tempatMangkal, dan tempat-tempat lainnya. Bola mata dan telunjuk harus kerja ekstra keras agar bisa bertemu dengan konten yang diinginkan. Apalagi kalau pakai var_dump – sebaiknya alat ini tidak perlu kita bahas mengingat format keluarannya setara bahasa alay. Sama-sama menguras energi.

Kint

Berawal dari etalase trending repo di github. Bertemulah saya dengan barang antik ini. Oke, sekarang gimana kalau fungsi debug yang acak bin kadul di atas kita pangkas menjadi seperti ini :

d($tempatWisata)

Dan keluarannya kita percantik jadi seperti ini :

KintDebug

Ya ya, saya tahu anda juga takjub. Sama seperti saya waktu kali pertama melihatnya. Keluaran debugnya rapih banget, udah gitu dibuat model matriks sesuai dimensi dan elemennya masing-masing. Tiap parent elemen bisa dibuka tutup dengan fleksibel. Jadi seberapa pun panjang elemen mata akan tetap nyaman membacanya di layar.

Terima kasih kepada Kint. Karenanya kehidupan tukang debug menjadi lebih baik. Kint ini juga mudah dirakit. Cukup letakkan foldernya di tempat strategis, kemudian buatlah .htaccess di root aplikasi dengan isi seperti ini:

# Kint PHP Debugger[1]
php_value auto_prepend_file "/path/ke/direktori/Kint/Kint.class.php"

Selesai. Untuk memulai debug, cukup panggil salah satu function di bawah ini :

* Tampilkan hasil debug, lanjutkan eksekusi baris berikutnya
d($var) atau d($var1, $var2, $var3, dst);

* Tampilkan hasil debug lalu hentikan program.
dd($var) atau dd($var1, $var2, $var3).

* Tampilkan hasil debug dalam format plain text tanpa collapse button.
sd($var) atau sd($var1, $var2, $var3).

Sesederhana itu.

Kesimpulan

Format tradisional nomer empat memakan hingga 25 karakter di luar nama variabel. Andai variabel yang kita  debug rata-rata 5 karakter, dan jumlahnya ada 3. Maka editor kita akan dikotori dengan (25 + 5) * 3. 90 karakter. Nilai yang besar untuk sebuah pekerjaan yang harus dilakukan berulang setiap hari.

Untuk kasus serupa, Kint hanya butuh (3 + 5) * 3. 24 karakter saja. Lebih ringkes hingga 1/3 nya. Bagi saya, Kint sangat menghemat energi saat pembacaan baris kode.

Sebenernya masih banyak lagi fitur yg bisa dimanfaatkan dari si Kint Ini. Tapi untuk self defence fitur d, dd, dan sd sudah sangat memadai. Demikianlah spek singkat swiss army si tukang debug. Semoga menambah produktifitas orang-orang yang berprofesi sama.

[1] Baris ini adalah direktif agar si php otomatis menyisipkan berkas tertentu sebelum eksekusi halaman dijalankan.

One thought on “Swiss Army Si Tukang Debug

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s