5 Kesalahan Terfavorit Saya dalam Programming

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s