Gejala Code Smell, seberapa bau kode anda ?

Gejala code smell dalam Class

  • komentar: kalau bisa program direfaktor sehingga komentar tidak lagi diperlukan. Kalau terpaksa, harus menjelaskan kenapa (bukan apa)
  • Metode panjang: metode pendek lebih mudah dibaca, dimengerti dan diperbaiki. metode panjang perlu direfaktor sehingga menjadi pendek
  • Parameter yang banyak: batasi parameter
  • Kode berulang: Donot Repeat Yourself !
  • Class besar: perlu di restruktur sehingga menjadi kecil-kecil
  • Menempatkan tipe pada nama metode: hindari hal ini, karena tidak hanya menjadikan redundan, akan tetapi juga menyebabkan penggantian nama jika tipe berganti
  • Nama yang tidak komunikatif: apakah nama metode anda sudah sesuai?menjelaskan fungsinya?
  • Nama yang tidak konsisten: kalau anda punya metode OPEN(), anda perlu punya metode CLOSE()
  • Dead Code: hapuslah kode yang tidak terpakai
  • Speculative Generality: tulislah kode yang diperlukan saat ini, Always implement things when you actually need them, never when you just foresee that you need them
  • Field Sementara: perhatikan objek yang berisi banyak field. Jika melewatkan parameter, pastikan semua field terisi

Referensi : coding horror

Autosuggest

Controller

<? p h p
class Test_autosuggest extends CI_Controller{
function index(){
$data=array(‘content’=>$this->populate_content());
$this->load->view(‘common/header’);
$this->load->view(‘test_autosuggest’,$data);
$this->load->view(‘common/footer’);
}
function populate_content(){
return “['satu','dua','tiga','empat','lima','enam']“;
}
}

View

<s cr ipt type=”text/javascript”>
$(document).ready(function(){
var isi=<?php echo $content;?>;//['satu','dua','tiga','empat'];
$(‘#teks’).autocomplete({source:isi});
});
</s cr ipt>
<?p h   p
$teks=array(‘id’=>’teks’,'name’=>’teks’,'class’=>’teks’);
echo form_input($teks);

 

Panada released

Ada kabar baik dari dunia web tanah air, yaitu release framework PHP buatan anak bangsa dengan nama Panada, yang dipelopori oleh Cak Kandar dkk. Dapat diakses di http://panadaframework.com.
Maju terus IT Indonesia …maju terus FOSS id

php preg_match

p r e g_m a t c h('/(19[5-9][0-9]|20[0-9][0-9])[\/-](0[1-9]|1[0-2])[\/-](0[1-9]|1[0-9]|2[0-9]|3[01])/','2011/12/30',$match);
p r e g_m a t c h('/(0[1-9]|1[0-9]|2[0-9]|3[01])[\/-](0[1-9]|1[0-2])[\/-](19[5-9][0-9]|20[0-9][0-9])/','30/12/2011',$match);
p r e g_m a t c h('/(0[1-9]|1[0-2])[\/-](0[1-9]|1[0-9]|2[0-9]|3[01])[\/-](19[5-9][0-9]|20[0-9][0-9])/','12/30/2011',$match);
p r e g_m a t c h('/(19[5-9][0-9]|20[0-9][0-9])[\/-](0[1-9]|1[0-2])[\/-](0[1-9]|1[0-9]|2[0-9]|3[01])/','2011-12-30',$match);
p r e g_m a t c h('/(0[1-9]|1[0-9]|2[0-9]|3[01])[\/-](0[1-9]|1[0-2])[\/-](19[5-9][0-9]|20[0-9][0-9])/','30-12-2011',$match);
p r e g_m a t c h('/(0[1-9]|1[0-2])[\/-](0[1-9]|1[0-9]|2[0-9]|3[01])[\/-](19[5-9][0-9]|20[0-9][0-9])/','12-30-2011',$match);

CodeIgniter 2.0.2 dengan jquery

Lokasi js dan css pada CodeIgniter 2.0.2

  • application
    • controllers
    • models
    • views
  • css
  • js

script pada js dapat dicapai dengan base_url, echo base_url() . ‘js/….’

Query pada DataMapper

where
Penggunaan where pada DataMapper untuk menyaring row yang hendak diretrieve
function find(){
$clients=new Client;
$clients->where('NAMA_PELANGGAN','AD');
$clients->get();
foreach($clients as $client){
echo $client->NAMA_PELANGGAN . '
';
}
}

where_not_in
Dipergunakan untuk memilih record dengan kondisi tertentu, yaitu diluar kondisi yang diberikan oleh parameter

$branch=new Branch;
$branch->where_not_in('name',$user->branch->name);
$b=$branch->get();

Hasilnya adalah list branch diluar branch yang dimiliki user

like
Penggunaan like pada DataMapper untuk menyaring row yang hendak diretrieve
function find(){
$clients=new Client;
$clients->like('NAMA_PELANGGAN','AD%');
$clients->get();
foreach($clients as $client){
echo $client->NAMA_PELANGGAN . '
';
}
}

like dengan relationship

$clients                =    $branch->client->like(‘name’,$search_param)->
or_ilike(‘applicant’,$search_param)->
or_ilike_related_service(‘name’,$search_param)->
or_ilike_related_category(‘name’,$search_param)->                                or_ilike_related(‘sale/user’,'username’,$search_param)->order_by_related(‘branch’,'name’,$this->uri->segment(5));

 

Update
Dipergunakan untuk mengupdate / mengubah nilai record
$params = $this->input->post();
$branch = new Branch;
$branch->where('id',$params['id']);
$branch->update('name',$params['nama']);

Update relationship

$client=new Client;
$client->where(‘id’,$params['id'])->get();
$client->contact->where(‘tipe’,'administrasi’)->select(‘id’)->get();
$client->contact->update_all(‘name’,$params['administrasiname']);

Model pada DataMapper

Model
Model pada DataMapper mengextend class DataMapper. Contohnya adalah sebagai berikut:


class Employee extends DataMapper{
var $has_one = array('deparment');
function __construct(){
parent::__construct();
$this->load->model('employees');
}
}


class Department extends DataMapper{
var $has_many = array('employee');
function __construct(){
parent::__construct();
$this->load->model('departments');
}
}

table SQL:
create table Employee (id int primary key auto_increment, name varchar(30),department_id int not null);
create table Department (id int primary key auto_increment, name varchar(30));

Yang perlu diperhatikan adalah tatacara penamaan table SQL dan Model. Model diberi nama sesuai dengan bentuk singular nya, sedangkan table SQL diberi nama sesuai dengan bentuk pluralnya.

Controller
Controller dapat mengakses data dari model, membaca, maupun menulis


class Employees extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model('employee');
}
function index(){
$employees=new Employee;
$employees->get();
foreach($employees as $employee){
echo $employee->name;//menampilkan nama employee
echo $employee->department->name;//menampilkan nama department
}
}
}

DataMapper

Kita dapat menggunakan DataMapper untuk relasi antar objek dalam CodeIgniter. Untuk CodeIgniter 2.0.2, library ini masih bekerja dengan baik.

Menu sederhana pada CodeIgniter 2.0.2

Baru mengupload menu yang sangat sederhana untuk CodeIgniter di sini..

  1. disarankan menggunakan Modular Extension HMVC
  2. download di sini
  3. ekstrak
  4. rename folder menjadi main
  5. letakkan di folder modules

panggil class main dari halaman web http://servername/index.php/main

Menampilkan daftar direktori dan file

Menampilkan daftar direktori dan file di CodeIgniter 2.0.2, menggunakan directory_map() dari helper directory. Secara default fungsi ini tidak menampilkan file-file hidden. Untuk menampilkan file-file hidden pada fungsi directory_map dapat ditambahkan parameter ketiga yang bernilai TRUE.

class Files extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->helper('directory');
}
function index(){
$data = directory_map('application',FALSE);
echo 'directory:';
foreach($data as $key=>$value){
echo $key;
}
echo 'files:';
foreach($data as $key=>$values){
if(!is_array($values)){
echo $values;
}
}
}
}

Follow

Get every new post delivered to your Inbox.