Welcome to Abdul Malik Ikhsan's Blog

Zend Framework 2 : Purists vs Pragmatic Developer

Posted in Tutorial PHP, Zend Framework 2 by samsonasik on July 17, 2012

Kita semua tahu, bahwa segala macam teori yang ada, sebaiknya mendukung implementasi. Namun, pada akhirnya, teori kadang tak selalu bisa diimplementasikan dengan se-“ketat” yang seharusnya. Para developer aplikasi biasa terbagi menjadi 2, yaitu yang purists, dan yang satu pragmatis.

Pada kesempatan kali ini saya akan mencoba memaparkan purisitas dan pragmatisitas pada penggunaan framework Zend Framework. Kaum purists menganggap bahwa segala sesuatu haruslah ideal, detail, dan super rapi, sesuai dengan tatanan, dan harus benar-benar tahu suatu itu terjadi dari mana berasalnya. Sedang kaum Pragmatis melihat segala sesuatu dari kemanfaatan, kepraktisan, dan kegunaan secara nyata.
Sebagai contoh, bisa dilihat dari 2 kode berikut :

class Module implements AutoloaderProviderInterface, ControllerProviderInterface
{
   function getAutoloaderConfig(){/* code */} //implements from AutoloaderProviderInterface
   function getControllerConfig(){ /* code */} //implements ControllerProviderInterface
}

yang bisa dituliskan secara singkat oleh kaum pragmatis sebagai berikut :

class Module
{
   function getAutoloaderConfig(){/* code */}
   function getControllerConfig(){ /* code */}
}

Jika developer yang purists berpendapat, bahwa kita perlu tahu dari mana suatu kode berasal, dan kita bisa jadi tertib menuliskannya dengan panduan kita tahu sumbernya, maka kaum pragmatis berpendapat tidak perlu menuliskan interface dikarenakan toh tidak dituliskan pun tidak apa-apa. dan tetap RUN. haha.

Dalam situasi lain, misalnya. Kita hendak mengelola suatu table, maka kaum purists membuat minimal 2 Kelas di sisi Model, kelas entity, dan kelas Table seperti berikut :

Kelas entity :

namespace Test\Model;

class Testentity
{
    public $id;
    public $name;

    public function exchangeArray($data)
    {
        $this->id     = (isset($data['id'])) ? $data['id'] : null;
        $this->name     = (isset($data['name'])) ? $data['name'] : null;
    }
}

Dan class table :


namespace Test\Model;

use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Adapter\Adapter;

class Testtable
    extends AbstractTableGateway
{
    protected $table = 'test_table';

    public function __construct(Adapter $adapter)
    {
        $this->adapter = $adapter;
        $this->initialize();
    }

    public function SaveDate(Testentity $entity)
    {
        $data = array(
            'id' => $entity->id,
            'name' => $entity->name
        );

        $this->insert($data);
    }
}

Dan coba tebak apa yang dilakukan kaum pragmatis, mereka akan membuat 1 kelas, YA, 1 kelas dengan beralasan, bahwa Model adalah tempat menyimpan business logic, dan data access logic. Masih “tak terlalu” salah bukan ? hahaha
coba lihat kode program pragmatis berikut :

namespace Test\Model;

use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Adapter\Adapter;

class Testtable
    extends AbstractTableGateway
{
    protected $table = 'test_table';

    public function __construct(Adapter $adapter)
    {
        $this->adapter = $adapter;
        $this->initialize();
    }

    public function SaveDate($data)
    {
        $data['id']     = (isset($data['id'])) ? $data['id'] : null;
        $data['name']   = (isset($data['name'])) ? $data['name'] : null;

        $this->insert($data);
    }
}

Jika kita menginginkan software yang berkualitas bagus, dan mudah direfactor, sebaiknya kita bersifat purist, tapi jika kita sedang mengerjakan project dengan deadline, maka tak ada salahnya kan kadang-kadang bersikap pragmatis ?

Referensi :
http://fabien.potencier.org/article/47/pragmatism-over-theory-protected-vs-private

2 Responses

Subscribe to comments with RSS.

  1. safwat93 said, on October 17, 2012 at 1:27 pm

    deadline seharusnya bukan dateline CMIIW 😀

  2. samsonasik said, on October 17, 2012 at 2:43 pm

    oh iya, udah diupdate, makasih 😀


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: