Diberi Harapan Palsu (Episode: 1)

Sebagian orang mengartikan PHP sebagai singkatan dari Pemberi Harapan Palsu. Cukup relevan, anggap saya, karena saat belajar PHP saya sering sekali menemui kenyataan yang tak sesuai harapan. Alias di PHP-in. 😦

Mengenal Ternary Expression

Di beberapa bahasa pemrograman termasuk PHP, dikenal adanya ternary expression. Penulisannya mungkin tampak membingungkan bagi sebagian orang, tapi sebenarnya cukup mudah dipahami. Seperti ini:

/*
hasil akhir nembak si anu adalah:
kalau kamu ganteng, kamu diterima jadi pacar.
Kalau nggak, cukup friendzone saja.
*/
nembak = ganteng ? diterima : friendzone

Meski tidak terlalu terkenal, ternary epxression sebenarnya memiliki beberapa manfaat. Misalnya untuk mengubah nilai sebuah variabel berdasarkan nilai variabel lain. Singkatnya, ternary epxression bisa dianggap if-else dalam 1 baris unyu.

Women’s Logic

Salah satu kondisi dimana logika seorang laki-laki sedang diuji oleh Gusti Allah adalah ketika dia berantem dengan pasangannya (bagi yang punya). Di kondisi normal, kesalahan ditanggung oleh pelaku. Dalam artian:

Jika A salah dan B benar sehingga terjadi C, maka A yang bersalah.

Jika A benar dan B salah sehingga terjadi C, maka B yang bersalah

Jika dua-duanya benar tapi C tetap terjadi, mungkin ini takdir.

Tapi saat anda berantem dengan pasangan perempuan anda, biasanya aturan diatas menjadi tidak berguna. “Pokoknya kamu yang salah”, “Aku pengennya kamu yang salah”, “Tega-teganya kamu nyalahin aku”, “Turunin aku sekarang™” dan berbagai alasan lain dikemukakan. Hanya ada 2 cara keluar dari siksaan ini. Mengakui andalah yang salah, atau lupakan saja (orangnya). Sekarang perhatikan kode dibawah ini:

salahku ? "Aku yang salah." : salahmu ? "Kamu yang salah!" : "Ini takdir!"

Kalau dilihat sekilas, kode ternari diatas tidak akan berperilaku sebagaimana pasangan anda, kode diatas diharapkan bertindak jujur sesuai data dan fakta. Benarkah seperti itu? mari kita tanyakan pada tiga nona cantik dibawah ini.

Ternari di javascript
Ternari di javascript

Nona Javascript dan nona C menyatakan “benar”, nona PHP menyatakan “kasih tau gak yaaa?”. 😦

Siapa yang salah?
Tipikal. (kode sumber: http://ideone.com/ZvqIl6)

Wat? wai? How?

Menumpuk ekspresi ternari di PHP tidak disarankan karena menghasilkan uhuk non-obvious behaviour uhuk alias kode yang ditulis tidak bertindak sesuai logika umum. Ekspresi x ? a : y ? b : z ? c : d , misalnya. Akan dievaluasi seperti ini:

( x ? a : (y ? b : (z ? c : d) ) ) //harapan (dan berlaku umum)
( ( ( x ? a : y) ? b : z) ? c : d) //kenyataan (di PHP)

Berdasar ekspresi diatas, di bahasa pemrograman yang lain ekspresi pertama hanya akan menggunakan ekspresi kedua sebagai parameter jika hasil akhir ekspresi pertama false. Di PHP, ekspresi pertama akan menjadi parameter di ekspresi kedua, yang akan menjadi parameter di ekspresi ketiga, dan seterusnya. Pada akhirnya, ekspresi ini hanya memiliki 2 kemungkinan hasil: c atau d.

Refactor

Untuk masa depan yang lebih baik, hindari penggunaan ternari bertumpuk. Selain memberikan hasil yang aneh (di PHP), ternari bertumpuk juga sulit dibaca dan dipahami oleh sebagian orang. Refactor saja kode diatas menjadi:

if(salahku) {
    /*kode*/
} elseif(salahmu) {
    /*kode*/
} else {
    /*kode*/
}

Oh iya, tips ini cuma berlaku untuk programming. Melakukan refactor terhadap pasangan tidak disarankan karena menghasilkan non-obvious behaviour.

2 tanggapan untuk “Diberi Harapan Palsu (Episode: 1)

kom entar?

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.