CODEIGNITER, CAKEPHP DAN YII MENURUT SAYA

Selama beberapa hari ini saya masih merasa impressif dengan CakePHP, meskipun sebelumnya lebih banyak menggunakan CodeIgniter. Aneh, ketika banyak orang lebih senang dengan CodeIgniter, saya justru terkesan dengan pola pengembangan menggunakan CakePHP, dengan aturan main yang sangat ketat. Jauh berbeda dengan CodeIgniter yang longgar aturannya, karena CakePHP lebih murni MVC. Pada CodeIgniter, apapun bisa dilakukan di model, view maupun controller. Bahkan, saya pernah membuat library abal-abal yang ada SQLnya. Meskipun mudah, tapi saya merasa kurang nyaman dengan kelonggaran yang diberikan CodeIgniter. Bahkan, query builder (active record) CodeIgniter, bisa dieksekusi pada controller. Dengan pengembangan seperti ini, jumlah baris kode controller menjadi sangat banyak. Ujung-ujungnya, membingungkan maintenance. Belum lagi ketika bicara standard pengembangan. Wah, untuk pengembangan yang tidak kecil jangan menggunakan CodeIgniter lah sebaiknya. Pergantian programmer, selalu diikuti dengan pergantian style coding. Begitu terjadi pergantian programmer sampai sepuluh kali, hampir dipastikan programmer terakhir bakalan mabok melakukan maintenance code yang nggak karuan stylenya.
Kasus seperti inilah yang bisa diminimalisir oleh CakePHP. Perhatikan baris code berikut:

class CategoriesController extends AppController {
	function add() {
		if ( !empty ( $this->data ) ) {
			$this->Category->create();
			if ($this->Category->save($this->data)) {
				$this->Session->setFlash(__('The Category has been saved', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('The Category could not be saved. Please, try again.', true));
			}
		}
	}
}

Penamaan controller dalam CakePHP sudah ada aturannya. Ini memiliki benang merah dengan penamaan model. penamaan fungsi, memiliki benang merah dengan nama view. Semua jelas aturannya, dan harus sesuai dengan convention agar bisa bekerja.
Sekarang perhatikan baris

$this->Category->save($this->data);

Baris inilah yang membuat saya sangat terkesan dengan CakePHP. ORM benar-benar membantu melakukan operasi yang berhubungan dengan database. Semua relasi dipetakan, dan tinggal dicomot untuk digunakan. Bahkan, validasi form bisa dilakukan dengan sangat sederhana, hanya mendefinisikan array di model, dan semua sudah bekerja. What do we expect more?
Bagaimana dengan Yii? Saya mencobanya hari ini, dan begitu melihat bagaimana code dibangun dengan Yii, saya langsung pesimis. Meskipun hasil test performance luar biasa, mengungguli CakePHP dan CodeIgniter, tapi style code yang ditawarkan tidak saya sukai. Selain itu, berdasarkan pengalaman, performance aplikasi lebih banyak dipengaruhi oleh database query dari pada rendering halaman PHP.
Perhatikan contoh code controller berikut untuk membuat hello world:

class SiteController extends CController
{
	public function actionIndex()
	{
		echo 'Hello World';
	}
}

Hehehe, ini adalah baris code pertama yang saya lihat di Yii, dan langsung membuat saya pesimis untuk menggunakannya. CakePHP tidak akan mengizinkan hal serupa terjadi. Output hanya bisa digenerate lewat view, dan controller murni berisi business logic. Sebagian programmer cenderung lebih menyukai model coding seperti ini di CodeIgniter maupun Yii, karena bebas dan leluasa melakukan coding. Boleh dan sah-sah saja. Tapi untuk pengembangan skala kecil.
Bagaimana dengan pengembangan skala menengah sampai besar? Hal yang harus diingat dalam pengembangan skala menengah dan besar adalah konsistensi pengembangan jangka panjang dan maintenance yang membutuhkan code convention (aturan code) yang baku. Dalam hal ini, CakePHP lebih menjanjikan, karena memang convention dalam CakePHP jauh lebih ketat. Aturan penamaan class, fungsi, file naming, form handling, dan sebagainya sudah baku. Bahkan, penempatan file pendukung seperti file JavaScript, CSS, image, external resource, component, library, template, layout dan sebagainya sudah ditentukan. Aturan-aturan seperti ini akan sangat membantu untuk pengembangan dan maintenance jangka panjang, karena programmer, dengan style apapun, dipaksa mengikuti aturan main yang sudah ditentukan oleh framework. Standard inilah yang juga harus diikuti oleh programmer-programmer yang baru bergabung.
Sampai saat ini, selain ORM dan auto generate code , convention yang ditawarkan oleh CakePHP benar-benar membuat saya nyaman untuk memulai pengembangan project baru. Untuk ke depannya, saya sudah tidak perlu lagi cuap-cuap jika ada programmer baru, tinggal menyuruhnya mempelajari CakePHP, dan saya bisa tidur dengan nyaman

3 Responses to this post.

  1. coding convention memang perlu bener2 strict bro. pengalaman kemaren di sigawe membuat aplikasi dengan banyak programmer bener2 bikin mabok. mereka jalan dengan style masing masing. Terakhir ketika mereka dah pada cabut aku yang jadi mabok ngetrace code dan akhirnya menyerah.

    Karena aplikasi gak terlalu guede jadinya ku putuskan untuk buat ulang semua dari awal. yah walau sedikit lebih berat tapi sekarang lebih readable

    Reply

    • Aku sendiri juga baru paham sekarang2 saja. Masalah maintenance kadang tidak terpikirkan ketika dalam inkubasi produksi, tapi ketika selesai produksi, kemudian dipakai, dan terjadi rotasi programmer, hal tersebut benar-benar menyulitkan. Menurutku, coding convention bermanfaat untuk jangka panjang. Tapi, investasi untuk memahaminya memang besar, dan harus bersedia untuk MABOK belajar :)

      Reply

  2. Posted by barkey on July 22, 2009 at 5:34 pm

    aku juga nggak paham2 bro…makanya aku jadi akuntan aja…hahahaha

    >>> wekekekek… yo semua manusia kan dilahirkan dengan takdirnya masing-masing kah? Mosok arep dadi programmer kabeh :p

    Reply

Respond to this post