Hi Guys,
Akhirnya bisa balik lagi nulis nih. Beberapa hari ini gw sedang sibuk untuk mempelajari node.js lebih mendalam. So maafkan ya atas penundaannya. Kali ini kita akan ngebahas mengenai function atau kalau dalam OOP disebut dengan method.
Berikut aturan yang harus dicapai agar function yang dibuat dapat dikatakan clean code :
- Kecil
Maksudnya apa kecil? Ukuran function haruslah kecil atau lebih tepatnya pendek. Pernah liat koding yang panjang sampai ribuan line? Ya dulu gw sempat menganggap bahwa koding semakin panjang semakin bagus. Itu menunjukkan bahwa gw adalah programmer dengan kemampuan koding yang hebat. Ternyata makin kesini gw semakin ngeh bahwa banyaknya line of code dalam koding yang gw buat makin menunjukkan rendahnya kemampuan gw dalam ngoding. Mereka yang sudah terampil dalam ngoding biasanya akan lebih memendekkan kodingnya atau lebih kerennya mengefisenkan panjangnya code. Ini memang bukanlah hal yang mudah, karena untuk mencapai ini dibutuhkan proses dan memang hanya mereka yang sudah berpengalaman lah yang bisa mencapai proses ini. Contoh koding :
12345if ($x == 5){return true;} else {return false;}
Bagaimana kalau pola pikirnya seperti ini.
123$val = $x == 5 ? true : false;return $val; - Blocks dan indentasi.
Block biasanya untuk menutupi sebuah if statement, for statement, while statement dan statement lainnya. Biasanya block dan indentasi berjalan beriringan dimana line setelah pembuka block akan diisi oleh indentasi agar programmer dapat mengerti bahwa koding tersebut masuk ke dalam block tersebut. Aturannya sendiri yang baik bahwa dalam sebuah function hanya terdapat 2 kedalaman block dan indentasi, lebih dari itu hanya akan membuat programmer menjadi bingung karena block menjadi nested dan sulit untuk dideteksi. Contohnya sebagai berikut.
1234567function checkOddNumber(){for($i = 0; $i < 10; $i++){ // indentansi 1if($i % 2 == 1){ // indentasi 2echo "Bilangan Ganjil <br/>";}}} - Do One Thing
Pada hakikatnya function seharusnya hanya melakukan sebuah tugas. Tentukan tugas yang ingin dikerjakan sebuah function sehingga mudah untuk dimaintain. Berikut contoh function yang hanya melakukan sebuah tugas.
123public function calculateArea(){return $this->width * $this->height} - One Level of Abstraction per function
Yang ini agak susah kalau diterjemahkan ke dalam bahasa Indonesia. Singkat cerita seperti ini, dalam sebuah function tentu bisa terdapat function lain yang dipanggil. Kenapa bisa seperti itu? Karena memang function tersebut dapat digunakan oleh function yang lain. Untuk yang satu ini lebih enak jika menggunakan contoh function saja ya.
123456789101112131415161718192021222324252627282930313233public function index(){$this->header();$this->content();$this->footer();}public function header(){switch($this->headerType){case 'admin':$this->headerAdmin();break;case 'user':$this->headerUser();break;default:break;}}public function content(){echo "tampilkan content";}public function footer(){echo "tampilkan footer";}public function headerAdmin(){echo "Header Admin";}public function headerUser(){echo "Header User";} - Stepdown Rules
Membuat program itu mirip seperti membaca berita. Kita membacanya dari atas ke bawah, bukan dari bawah ke atas. Setiap function dan code yang dibuat sifatnya harus kronologis sehingga kita bisa mengerti dengan membacanya beberapa kali (ada kejadian koding yang sudah dibaca berkali-kali tetap tidak mengerti karena terlalu riweh kronologisnya). Nah bagaimana bentuk kodingnya. Contohnya sebagai berikut :
1234567891011121314151617181920212223242526272829303132333435<?phppublic function index(){$this->header();$this->content();$this->footer();}public function header(){switch($this->headerType){case 'admin':$this->headerAdmin();break;case 'user':$this->headerUser();break;default:break;}}public function headerAdmin(){echo "Header Admin";}public function headerUser(){echo "Header User";}public function content(){echo "tampilkan content";}public function footer(){echo "tampilkan footer";}
Demikian sedikit ringkasan dari ane, semoga membantu ya.