Model yang disarankan untuk CI

penulisan model yang umum

metode penulisan ini dapat digunakan untuk model lain. pada dasarnya tidak ada yang salah dari penulisan ini. Yang harus diperhatikan adalah

  • jangan mengulang penulisan
  • buatlah sebuah validasi yang baik
  • buat kode yang mudah dibaca
  • efektifitas

Hindari pengulangan tulisan

pertama, kita bisa lihat pada fungsi pertama.. terlihat ada pengulangan penulisan

$this->db

metode yang terbaik adalah yang ada dibawah

$this->db->action->action

lalu bagaimana cara agar tidak mengulang? adalah memakai konsep 1 line.. namun ada kekurangan

  • tidak mudah terbaca
  • sulit untuk debug
  • sulit membuat validasi yang mudah

yang nanti akan jadi bahan untuk pembahasan berikutnya yaitu validasi

Validasi yang baik

apabila kita membahas validasi.. kita harus memisahkan antara kode utama dengan kode validasi.. contoh:

  • param[‘contoh’]= isset(variable)?variable:false;
  • param = isset(var)&&cariNamaVar(var)?cariNamaVar(var):array();
  • dan banyak contoh lain

cotoh pertama adalah model umum. karena hanya mencari keberadaan variable tentu tidak masalah digunakan.. tetapi ketika kasusnya panjang seperti contoh 2.. kita harus pisah menjadi

param[‘contoh’]=array() //nilai awal
//area validasi
if( isset(var)){
tmp=cariNamaVar(var);
if(tmp!=false) //biasa if(tmp)
param[‘contoh’]=tmp
}

dan ini berhubungan dengan readable atau mudah dibaca kodenya.

Nilai default

membuat fungsi demikian tidak direkomendasikan

function nama( param )

HINDARI.. kl pemula php silakan..

function nama( param = default value )

saya rekomendasikan ini.. dimana kita sudah memastikan parameter yang akan dipakai (dasarnya).. jadi saat ada yang akan menggunakan.. tidak perlu bingung tipe dalamnya apa!

READABLE

dari contoh di atas.. sebenarnya kita sudah lihat bahwa membuat sebuah code yang mudah dibaca itu sulit.. jadi untuk step ini.. kita harus banyak mengetik dan membaca.

kembali ke kasus one line.. saya sendiri tidak keberatan memakai oneline.. tetapi bagaimana kalau dibuat dengan bentuk

this->db
->action( )
->action()

Efektifitas

kode di atas tidak efektif!! banyak enter dan harusnya kode kita punya 100 line.. jadi meledak hingga 150!! bayangkan kalau aslinya 700… berapa yang muncul!

Kesimpulan

pada dasarnya.. harapan saya adalah membuat seperti dibawah

function cariTanggal( param=null ){
 value=null;
 if( param != null){
 param=convertKeFormatTanggal(param);
 $tmp=cariNilai(param);
 if(tmp) value=tmp;
 }
 
 where = array(‘tanggal’=>value);
 $res=this->db
 ->where(where)
 ->select(*)
 ->from(‘table’);
/*mencegah ada error jadi harus ada validasi */ 
 log_message(‘debug’,’sql:’.$this->db->last_query());
 return $res;
}

kenapa saya repot2 buat panjang.. karena untuk mencegah error yang mungkin akan terjadi.. misal salah penulisan / format tanggalnya