5 Bulan lalu, sy merefactor (rename) Openbiz View menjadi WebPage dalam OpenbizX.
Karena sebenarnya hal itu bukan bagian view dalam MVC, melainkan controller.
Dalam arsitektur MVC, controller ini ada 2 jenis,
- menggunakan PageController
- menggunakan FrontController
PageController
Cara kerja PageController ini lebih simpel,
satu page satu controller dan bisa langsung di akses dari file controller tersebut dibuat.
Hanya satu action dalam PageController.
Contoh ya :
It’s, very simple :D
Kenapa kok tidak begini saja?
Kan jadi lebih simple?
Tidak, itu memang terlihat lebih simple,
tetapi dampaknya justru tidak simple lagi,
karena mengekspos variable menjadi GLOBAL.
JIka kita ingin menambah proses dalam controller
dan membutuhkan variable tingkat controller,
maka variable tersebut akan menjadi global juga.
FrontController
Oke, untuk yang menggunakan FrontController, contohnya sudah banyak tersebar.
Pada umumnya framework-framework yang ada saat ini menggukan FrontController.
Kelebihan menggunakan FrontController ini adalah route menjadi lebih fleksibel.
Controller dalam OpenbizX
Nah yang unik dari OpenbizX ini adalah menggabungkan ke dua hal diatas, PageController dan FrontController sekaligus.
Tetap mempertahankan kesederhanaan PageController tetapi menggunakan fleksibilitas FrontController.
Tidak itu saja, PageController di OpenbizX saya rencanakan bisa memiliki action tambahan,
tetapi action ini hanya dipakai untuk sesuatu yang terkait dengan controller.
Refactoring adalah perbaikan desain dari kode yang sudah ada.
Dalam Refactoring, kita tidak menambah fitur, melainkan hanya memindah,
memecah, menggabung, menghapus atau mengganti nama kode yang sudah ada.
Tujuannya adalah supaya kualitas kode menjadi lebih baik.
Dalam pengenalan ini saya akan menyajikan contoh kasus refactoring.
Pada aplikasi penjualan ada dua object, yaitu Sales dan SalesItem.
Sales menyimpan informasi transaksi penjualan, sedangkan SalesItem menyimpan detil transaksinya.
Kedua object tersebut didefinisikan dalam class sebagai berikut:
Perhatikan kode dalam method calcTotal(), ada dua hal yang perlu di refactoring yaitu total item dan rumus perhitungan pajak (tax). Kita perlu menambah dua method dalam object Sales sebagai berikut:
Kemudian method calcTotal() kita sederhanakan menjadi berikut:
Perhatikan, method itemTotal() melakukan perhitungan dengan variable yang ada di object SalesItem saja, tidak ada variable dari object lain.
Sudah selayaknya mothod itemTotal() kita pindah ke class SalesItem dengan nama method ‘total’ saja.
Kita sekaligus menerapkan Single Resposibility Principle.
Kode dalam method calcTotal menjadi lebih sederhana, sebagai berikut:
Okay, berikut adalah hasil akhir dari kedua class tersebut:
Smoga contoh sederhana ini bisa difahami bagaimana melukan refactoring sehingga kode kita menjadi lebih berkualitas sehingga mudah difahami dan dipelihara.