Tampilkan postingan dengan label php. Tampilkan semua postingan
Tampilkan postingan dengan label php. Tampilkan semua postingan

Rabu, 06 Januari 2016

PHP - Penulisan Gaya If Statement

Dalam bahasa pemrograman PHP, ada banyak cara atau gaya penulisan if statement. Beberapa gaya mungkin menjadi ciri khas seseorang, tapi beberapa gaya penulisan ini juga dapat digunakan sesuai kebutuhannya. Misal, apabila di dalamnya terdapat hanya satu percabangan maka gunakan "ini", atau saya tidak ingin melihat kode yang saya tulis berantakan (terlalu banyak kurung kurawal "{}") maka saya gunakan "itu". Di dalam tulisan ini, akan saya tulis beberapa penulisan gaya if statement yang akan saya jelaskan juga saran dalam penggunaannya. Jika penulisan yang ada masih kurang lengkap, silakan ditambahkan.

Kode merupakan mainan sehari-hari programmer sehingga mereka terbiasa dengan apa yang mereka tulis. Tapi, apakah mereka akan bisa membaca tulisan sendiri jika tidak rapih? Di dalam tulisan ini juga akan membahas sedikit tentang elegant code yang merupakan teknik untuk menulis kode dengan "elegan". Maksud dari "elegan" di sini yaitu, mudah dibaca dan memiliki kompleksitas yang baik atau dapat diartikan memiliki algoritma yang baik serta efektif sehingga tidak menghabiskan banyak waktu untuk menulis.

Normal

Penulisan "normal" ini maksudnya yaitu gaya penulisan yang paling umum dan sering digunakan. Rata-rata orang yang baru belajar PHP akan menggunakan gaya penulisan ini. Adapun penulisannya yaitu:

if (kondisi) {
  // ...
}
else {
  // ...
}
Tapi, ada beberapa yang sedikit memodifikasi gaya tersebut sehingga menjadi:

if (kondisi) {
  // ...
} else {
  // ...
}
if (kondisi)
{
  // ...
}
else {
  // ...
}
Gaya penulisan "normal" ini biasanya menjadi ciri khas seseorang. Dimana beberapa developer hanya memakai satu gaya penulisan saja. Walaupun gaya penulisan tersebut sudah cukup baik dan mudah dibaca, tapi akan kurang efektif apabila menghadapi beberapa kasus.

Pelit

Gaya penulisan ini dikhususkan untuk kasus yang hanya memiliki satu perintah apabila if statement tersebut bernilai benar ataupun salah. Dengan penulisan gaya "pelit" ini, kode menjadi "elegan" dan enak dilihat.

if ($php == true) echo "COOL!";
else echo "BAD!";
Atau bisa ditulis seperti gaya penulisan pada bahasa C seperti ini:

if ($php == true)
  echo "COOL!";
else
 
echo "BAD!";
Apabila ditambahkan satu perintah di dalam kondisi if, maka akan muncul error. Karena itu, penulisan ini hanya untuk satu perintah di dalam percabangan if.

Keren

Penulisan yang satu ini mirip dengan if statement pada bahasa pemrograman Python. Saya rasa gaya penulisan ini cukup keren. Saya sendiri menggunakan gaya penulisan ini apabila if statement yang saya tulis berada di dalam sebuah function.

if ($cond == true):
  // ...
else:
  // ...
endif;

Gila

Yang satu ini biasa disebut ordinary if. Saya sebut "gila" karena jika percabangannya banyak akan membuat kepala pening untuk mengerti maksud dari if statement tersebut.

isset($php) ? true : false;
Penulisan di atas mungkin terlihat keren dan like a pro. Tapi, jika ditulis dengan banyak cabang akan membentuk:

echo ($php <= 9 ? "satuan" : ($php <= 99 ? "puluhan" : "..."))
Bagaimana? Pusing? Karena saya pernah menulis hingga 5 cabang dengan gaya penulisan ordinary if ini, sehingga saya tahu rasanya saat ada yang ingin disunting. Membutuhkan tenaga lebih untuk menelaah kembali apa yang sebenarnya saya tulis. Sehingga, tidak disarankan apabila untuk percabangan yang lebih dari 2 cabang.

Kesimpulan

Beberapa kode di atas dapat ditulis "bebas saja". Tetapi, akan lebih indah jika kita menggunakan sesuai porsi algoritmanya. Saran saya, gunakan "keren" jika ia berada di dalam function. Gunakan "normal" bebas saja, tetapi gaya penulisan ini mungkin sedikit kuno di PHP dan jika ingin beralih ke "keren" dipersilakan. Dan jika if statement ringan (satu perintah di dalamnya) gunakan saja "pelit". Lalu, untuk ordinary if, gunakan saja untuk variable processing. Adapun kesatuan semuanya saya tulis menjadi satu:

function is_true($bool = false) {
  if (!is_bool( $bool )) $bool = false; // pelit

  // keren
  if ($bool == true):
    $bool = "Cool!";
    $cond = true;

  else:
    $bool = "Bad!";
    $cond = false;
  endif;
  return $cond;
}

$var = is_true( true );
$php = ($var == true ? "True!" : "False!"); // ordinary if
echo $php;
// return "True!"
Cukup terlihat rapi dan elegan, bukan?

Penutup

Kerapihan kode juga merupakan hal penting apabila kita di dalam sebuah tim. Dengan kode yang rapih serta mudah dibaca, rekan kita akan dengan mudah melanjutkan apa yang kita kerjakan atau paling tidak mengerti apa yang kita buat.

Kelengkapan tulisan ini mungkin masih kurang. Jika ingin menambahkan, saya dengan senang hati mempersilakan Anda. Apabila ada kesalahan di dalam tulisan ini silakan dikoreksi dan dimaklumi serta dimaafkan. Karena saya hanya manusia biasa yang mencoba untuk menjadi penulis. Terima kasih.

Kamis, 31 Desember 2015

PHP - Kompleksitas Kode untuk Keluaran


PHP merupakan salah satu bahasa yang sangat populer di Indonesia. Dan tulisan ini saya buat untuk semua kalangan developer yang memcari efisiensi penulisan kode serta kompleksitasnya sehingga waktu eksekusi dapat dioptimalkan.

Data yang saya dapat berasal dari hasil melakukan eksperimen dengan bantuan alat PHP Profiler. Adapun yang saya gunakan yaitu Blackfire. Setelah melakukan banyak eksperimen dengan function print, printf, dan echo. Dengan pertimbangan banyak aspek tes seperti melakukan keluaran dengan big number (integer) yang terdiri dari 19 digit serta karakter huruf a-z yang terdiri dari 260 karakter.

Apa saja yang akan diuji? Saya akan uji beberapa tipe data seperti integer, string, dan array. Serta manipulasi variable dan mixing data type.

Integer

Untuk tipe data integer, dari hasil tes yang saya lakukan, sebaiknya gunakan print atau printf. Adapun waktu tercepat diperoleh oleh printf dengan beberapa ketentuan. Apakah Anda mengenal data type convertion di dalam bahasa C? Dengan menggunakan itu, kita akan mempercepat eksekusi kode. Caranya sangat mudah, tambahkan saja "(int)" di depan angka yang kita definisikan. Semisal:

$var = (int) 1;

Berbeda jika tanpa (int), kecepatan eksekusi berkurang, kenapa? Saya memiliki hipotesis seperti ini, "Tipe data di dalam PHP asumsikan saja umum, jika kita mendefinisikan tipe data-nya, maka kita mempercepat eksekusi waktunya". Kenapa? Jika tipe data tidak di definisikan, maka PHP akan mendefinisikannya untuk kita sehingga memerlukan waktu lagi. Karena itu, jika tipe data tersebut selalu sama dalam contoh kasus integer, maka tambahkan/gunakan (int) di depannya.
Untuk penggunaan kode-nya, bisa dilihat seperti ini.

print (int) 0123456789;
printf((int) 0123456789);
$var = (int) 0123456789;
print $var;
printf("%d", $var);

String

Berbeda dengan integer, tipe data string memiliki banyak aturan untuk efisiensi eksekusi waktunya. Tapi, secara umum tipe data string sudah cukup cepat jika menggunakan print atau echo. Sama halnya dengan integer yang menggunakan data type convertion (int), string juga akan lebih cepat jika menggunakan (string). Namun, jika menggunakan (string) sebaiknya saat penggunaan kutip satu (') saja. Penjelasan penggunaannya supaya efisien sebagai berikut.

print 'keluaran';
echo 'keluaran'; # sebaiknya gunakan echo
print (string) 'keluaran'; # sebaiknya gunakan print
echo (string) 'keluaran';
print "keluaran";
echo "keluaran"; # sebaiknya gunakan echo

Untuk variabel string, penggunaannya supaya efisien sebagai berikut.

$var = 'keluaran';
print $var;
echo $var; # sebaiknya gunakan echo
$var = "keluaran";
print $var;
echo $var; # sebaiknya gunakan echo
$var = (string) 'keluaran';
print $var;
echo $var; # sebaiknya gunakan echo
$var = (string) "keluaran";
print $var;
echo $var; # sebaiknya gunakan echo

Untuk fungsi printf, gunakan apabila kasusnya seperti ini saja.

$var = "keluaran";
printf("%s", $var);

Kesimpulan untuk tipe data string, sebaiknya gunakan echo saja.

echo 'keluaran'; # jika hanya string tanpa variabel, gunakan kutip satu saja
echo "keluaran $var"; # jika dengan variabel, gunakan kutip dua seperti ini saja

Array

 Tes ini dilakukan dengan array yang total isinya 1.000 index. Ada 2 cara penulisan array, yaitu.

array(...); # dengan function array
[...]; # dengan simbol []

Dari dua cara di atas, sebaiknya gunakan simbol [] untuk mendefinisikan array. Karena penggunaan [] lebih ringan dibandingkan dengan array().
Di dalam bermain array, untuk looping sebaiknya gunakan foreach. Dari hasil tes yang saya lakukan dengan array yang memiliki 1.000 index, function foreach yang memiliki kecepatan tertinggi dalam proses eksekusinya.

Peringatan! foreach yang terbaik apabila hanya digunakan untuk menampilkan data dari array. Namun, jika untuk melakukan modifikasi isi array, tentu saja berbeda.

$array = [0,1,2,3,..,1000]; # array berjumlah 1.000 index
foreach($array as $value) ...; # jika hanya ingin mengambil isi array
foreach($array as $key=>$value) ...; # jika ingin mengambil index serta isi array
# untuk mengambil index/keys pada array lalu melakukan manipulasi, sebaiknya gunakan
$keys = array_keys($array);
foreach($array as $value) lebih cepat dibandingkan dengan foreach([...] as $value)

Kesimpulan untuk tipe data array, dalam kebutuhan untuk keluaran, foreach merupakan yang terbaik. Untuk kecepatan, foreach($var as $new_var) lebih cepat dibandingkan dengan foreach([1,2,3,..,n] as $new_var).

Kesimpulan

Berbeda tipe data juga berbeda penanganannya untuk keluaran. Untuk int, print merupakan pilihan terbaik. Namun untuk str, echo-lah yang terbaik. Sementara untuk array, foreach lebih baik daripada penggunaan for dan while dalam kasus looping.

Penutup

Tulisan yang membahas kompleksitas serta efisiensi penulisan kode untuk PHP ini telah selesai. Tulisan yang dibuat bisa saja terdapat kesalahan, maka dari itu apabila menemukan kesalahan pada tulisan ini, saya berharap dapat dikoreksi bersama. Bukan bermaksud menggurui, saya hanya berbagi pengalaman yang saya dapatkan. Terima kasih.