Mengaku terinspirasi dari artikel di Smashing Magazine Feed yang judulnya My Favorite Programming Mistakes.
Aku jadi pengen mencatat kesalahan-kesalahan yang sering aku lakukan dalam programming, saking seringnya sampe jadi hobi.
-
1. Lupa Kalau Punya File Konfigurasi
Dalam membuat aplikasi, sudah bukan hal aneh kalau kita membuat sebuah file konfigurasi,
yang biasanya berisi konfigurasi koneksi database, variable global, dll.
Tapi sebuah keseringan bagi aku untuk, melakukan code cacat.Contoh
online.php
echo displayOnlineUser(5);
member.php
echo displayOnlineUser(5);
group.php
echo displayOnlineUser(5);
Maksudnya sih pengen nampilin 5 online user di sebuah halaman, tapi bodohnya kenapa kok angka 5 dimasukin ke situ ??.
bijimana kalo suatu saat usernya nambah banyak, dan pingin nampilin 40 user sekaligus ?? yah.. terpaksa deh find + replace,
mending kalo file nya cuma 2 atau 3 biji, kalo 27 bijimana ?? trus gimana kalo file yang make angka 5 ada banyak, dan beda fungsi.
hah.. lemburan deh..Solusi
config.php
define(‘NUM_USER_ONLINE_TO_DISPLAY’, 5);
online.php
include config.php; echo displayOnlineUser(NUM_USER_ONLINE_TO_DISPLAY);
Kalo pengen ganti jumlah yang ditampilin sebanyak 20, tinggal ganti 1 biji file doang deh, config.php .
lumayan kan walau gak dapet duit lemburan, tapi bisa tidur dengan nyenyak. -
2. Menganggap Eksekusi Sebuah Script Selalu Berhasil
Entah karena efek aku ini orang yang optimis (maksa),
aku sering menganggap bahwa eksekusi script dari awal sampai akhir pasti berjalan dan sukses.Contoh
beli.php
$harga = 20000; $jumlah = 35; insertPembelian($harga, $jumlah); echo “data pembelian berhasil disimpan”;
Trus ?? bijimana kalo insert nya gagal, padahal udah terlanjur bilang “data pembelian berhasil disimpan” ,
malu dong ..Solusi
biasakan gunakan if dan else, pastikan data atau proses yang ada, terevaluasi lebih dahulu.
beli.php
$harga = 20000; $jumlah = 35; if (!insertPembelian($harga, $jumlah)){ echo “maaf, data pembelian gagal disimpan”; } else { echo “data pembelian berhasil disimpan”; }
atau lebih ekstrim lagi gunakan try & catch
beli.php
$harga = 20000; $jumlah = 35; try { if (!insertPembelian($harga, $jumlah)){ throw (“maaf, data pembelian gagal disimpan”); } echo “data pembelian berhasil disimpan”; } catch (Exception $e){ echo $e->getMessage(); }
Metode try & catch ini paling sering aku gunakan sih, soalnya bisa menjaga flow.
3. Debugging di Sembarang Tempat
Udah jadi kebiasaan juga buat nyampah (debugging).
Contoh
online.php
$userOnline = getAllUserOnline(); var_dump($userOnline); echo $userOnline;
Maksudnya sih baik, pengen ngecek $userOnline
itu sebenernya isinya apaan. tapi karena garapnya kemaleman. trus pagi-pagi kudu live ke zona production / live. lupa deh buat ngehapus.Eng ing eng.
besok nya muncul deh array[4](“”).. bla bla di halaman,
:malu deh.Solusi
Pastikan konfigurasi “debug mode” tersedia pada file tertentu.
lakukan debugging kayak tadi jika dan hanya jika “debug mode” nya nyala / on / TRUE
online.php
$userOnline = getAllUserOnline(); if (DEBUG_MODE == true) { var_dump($userOnline); } echo $userOnline;
jadi kalo mau hapus-hapus debug tinggal ubah konfigurasi DEBUG_MODE nya jadi false
4. Mengulangi Kekosongan
Ini juga udah jadi hobi, maksudnya adalah kita coba melakukaan looping terhadap variable yang tidak bisa di looping seperti NULL / FALSE / Bukan Array dll
Contoh
online.php
$userOnline = getAllUserOnline(); foreach($userOnline as $user) { echo $user[‘nama’]; }
Niat hati sih, pengen nampilin nama setiap user yang online.
Tapi bijimana kalo gak ada yang online??
mending kalo getUserOnline() itu return nya array() / array kosong,
tapi kalo return nya string, atau false atau null ??
error-ejing deh..Solusi
Evaluasi variabel sebelum melakukan looping
online.php
$userOnline = getAllUserOnline(); if ($userOnline && is_array($userOnline)) { foreach($userOnline as $user) { echo $user[‘nama’]; } } else { die(‘no online user’); }
5. Males Baca Manual
Karena udah merasa dewa atau gimana, baca manual jadinya males. padahal kadang efeknya bisa signifikan.
Contoh
diff.php
$A = array (“a”, “b”, “c”); $B = array (“b”, “c”); $diff = array(); foreach($A as $a) { $isAda = false; foreach($B as $b) { if ($a === $b) { $isAda = true; break; } } if (!$isAda) { $diff[] = $a; } } var_dump($diff);
Kalo yang ini pengennya sih cuma pengen nampilin array yang isinya adalah anggota dari array $A yang gak ada di array $B.
Kode diatas udah dioptimasi sih, begitu ketemu langsung break, biar gak kebanyakan looping, tapi tetep aja. ada apa dengan function array_diff ??Solusi
Rajin baca situs dokumentasi (php.net),
atau pake editor yang autocomplete nya bisa browse dan nampilin detail tentang function-function yang ada.diff.php
$A = array (“a”, “b”, “c”); $B = array (“b”, “c”); $diff = array_dif($A, $B); var_dump($diff);
Lebih simple kan ?? jadi RTFM (Read The Fucking Manual) please…
Udah deh segitu dulu, kalo kutulis semua, bisa jadi novel entar… maklum making mistakes in programming is my habit,
bikin kesalahan dalam programming itu udah jadi kebiasaan ku,
Kesimpulannya kita sebagai warga beriman, marilah menghindari kesalahan-kesalahan diatas, kalo masih salah juga :
┒(‘o’┒) LOE, (┌’,’┐) GUE = ┒(⌣˛⌣)┎ END