Programmer Copy-Paste

Yang penting jalan, urusan optimasi soal belakangan.

Di aplikasi (produk) yang saya kembangkan dan rawat sekarang, terdapat sebuah method dengan nama get_web_page(). Method ini berfungsi untuk scrapping ke URL eksternal untuk mengambil beberapa data di sana. Isinya kebanyakan fungsi yang berhubungan dengan cURL, mulai dari initilize sampai dengan close. Visibility-nya sendiri bersifat private, yang artinya hanya bisa digunakan pada class method tersebut berada.

function _get_web_page($url, $option, $final_url = FALSE) {
    $curl = curl_init($url);
    // $option[CURLOPT_PROXY] = '127.0.0.1:8080';
    curl_setopt_array($curl, $option);
    $content = curl_exec($curl);
    $data = curl_getinfo($curl); //mengambil info.
    $data['error'] = curl_error($curl); //untuk melihat error yang ada.
    $data['errno'] = curl_errno($curl); //untuk melihat nomer error.
    $data['content'] = $content;
    curl_close($curl);
    if ($final_url) {
        return $data;
    } else
        return $data['content'];
}

Method get_web_page() tersebut bisa saya bilang sebagai method yang legendaris. Bagaimana tidak, memasuki usia 7 tahun pengembangan, method ini hampir selalu ada pada class dari setiap produk yang dibuat. Tanpa ada perubahan script di dalamnya, sebarispun.

Awalnya, ada satu programmer yang menyalin method tersebut pada produk baru, berikutnya, programmer lain melakukan hal yang serupa. Sampai sekarang ini, method tersebut berada di mana-mana, berserakan seperti sampah. Padahal, method tersebut bukanlah sebuah standar yang harus diterapkan pada produk yang lain. Tak perlu lah yah saya jelaskan panjang lebar seputar reusable dan maintainability, pembaca status ini pasti kebanyakan programmer yang paham akan hal tersebut.

Semenjak 2010 sampai 2016 seperti sekarang, tak ada perkembangan berarti. PHP sudah memasuki versi 7, PHP-FIG sudah mengeluarkan standar sampai PSR-7, Composer sudah diaplikasikan hampir ke semua PHP Framework, dan sialnya, programmer yang mengambangkan produk baru masih saja melakukan hal yang sama seperti di atas. Menyalin code dan menaruhnya di produk baru? Ha?

Bener kan ini udah 2016?