Application –vs- Component Developer

Dalam suatu interview,  beberapa calon programmer  berkata sebagai berikut:

“ Saya adalah developer  aplikasi,  saya menggunakan komponen, dan tidak membuat komponen.”

Saya langsung berpikir, ‘ehem, saya ketemu dengan salah satu programmer  drag and drop yang tidak mengerti OOP’.  Karena kami bekerja dengan  komponen buatan sendiri,  calon programmer  yang berkata demikian tidak mungkin dipekerjakan di perusahaan kami.

Perkecualian  bagi  programmer Delphi  (di luar wawancara rekruitmen programmer) yang sangat akrab dengan OOP namun belum pernah membuat komponen.  Saya menyadari  bayangan sulitnya membuat komponen sering menjadi penghalang. Pada postingan mendatang saya akan bantah hal ini, dan akan saya tunjukkan betapa mudahnya membuat komponen. Pada posting kali ini saya akan tunjukkan kenapa  sebagai  developer aplikasi pun kita tetap dituntut mampu untuk membuat komponen.

Pada tahun 2007, kami memutuskan untuk mengkonversi aplikasi database yang masih menggunakan BDE  ke DBX.  Untuk melakukan hal ini, kami membuat suatu aplikasi yang dapat menkonversi seluruh  komponen TQuery ke komponen TDbxQuery.

Proses pengkoversian ke model 3  komponen DBX(TSqlQuery + TProvider + TClientDataset) akan sangat rawan terjadi kesalahan. Dan juga akan menghabiskan lebih banyak waktu dari yang dapat kami alokasikan.

Karena itu kami memutuskan untuk menghabiskan beberapa hari untuk membuat suatu komponen yang terlihat dan mempunyai sifat yang mirip seperti  TQuery namun secara internal mempunyai implementasi yang berbeda dengan menggunakan model 3 komponen DBX. Komponen tersebut mirip dengan TSimpleDataset namun mempunyai property dan function dengan nama yang sama dengan property dan function dari TQuery yang digunakan dalam aplikasi kami. Yang dengan hal tersebut memungkinkan bagi kami untuk mencari dan mengganti instance  TQuery dengan TDbxQuery.  Ini membuat kami dapat menyelesaikan proses konversi dalam waktu lebih singkat  daripada jika kami langsung me-replace satu persatu komponen dalam tiap form  dengan komponen yang sudah built in di Delphi. Selama kami hanya berurusan dengan implementasi kode komponen buatan tersebut, kami dapat menampilkan berbagai fungsi yang dibutuhkan dari model tiga komponen tersebut dengan tanpa secara langsung merubah kode aplikasi.

Ketika proses konversi ini berlangsung, tanpa disadari bahwa kami telah menggunakan ratusan komponen TDBGrid dalam aplikasi. Maka kami memutuskan mengembangkan aplikasi untuk dapat digunakan dalam jangka panjang. Kami mengganti komponen TDBGrid dengan TDwsGrid. Awal mulanya kode komponen TDwsGrid sebagai berikut.  Tidak ada perbedaan sama sekali dengan kode TDBGrid.

TDwsGrid = class(TCustomDBGrid)

published

property Align;

property Anchors;

property BiDiMode;

property BorderStyle;

property Color;

property Columns stored False;

property Constraints;

property Ctl3D;

property DataSource;

property DefaultDrawing;

property DragCursor;

property DragKind;

property DragMode;

property Enabled;

property FixedColor;

property Font;

property ImeMode;

property ImeName;

property Options;

property ParentBiDiMode;

property ParentColor;

property ParentCtl3D;

property ParentFont;

property ParentShowHint;

property PopupMenu;

property ReadOnly;

property ShowHint;

property TabOrder;

property TabStop;

property TitleFont;

property Visible;

property OnCellClick;

property OnColEnter;

property OnColExit;

property OnColumnMoved;

property OnDrawColumnCell;

property OnDblClick;

property OnDragDrop;

property OnDragOver;

property OnEditButtonClick;

property OnEndDock;

property OnEndDrag;

property OnEnter;

property OnExit;

property OnKeyDown;

property OnKeyPress;

property OnKeyUp;

property OnMouseActivate;

property OnMouseDown;

property OnMouseEnter;

property OnMouseLeave;

property OnMouseMove;

property OnMouseUp;

property OnMouseWheel;

property OnMouseWheelDown;

property OnMouseWheelUp;

property OnStartDock;

property OnStartDrag;

property OnTitleClick;

end;

Pada suatu hari kemudian, ketika saya mengamati komponen TDwsGrid, kini  telah mempunyai  tambahan kemampuan untuk:

-          Mengurutkan data sesuai dengan kolom Title yang diklik

-          Posisi dan ukuran kolom dapat diatur dalam suatu file konfigurasi

-          Mempunyai fasilitas ekspor ke file Excel

Memang  kemampuan yang ditambahkan dalam komponen tersebut bukan sesuatu yang sangat hebat, namun dengannya memungkinkan bagi kita untuk menambah banyak fungsionalitas TDBGrid tanpa harus menuliskan disetiap form yang menggunakan komponen ini.

Ketika hal ini kami jelaskan pada developer aplikasi, bisa jadi salah satu dari mereka akan bertanya: “Kenapa tidak membeli komponen pihak ketiga saja yang mempunyai fitur seperti itu?” Jawab Saya “Kami sudah melakukannya, ketika kami mendapatkan anggaran, kami telah membeli TMS Subscription dan sekarang kami menggunakan TDBAdvGrid   pada banyak tempat.”

Namun peristiwa yang kami alami pada kasus TDBGrid masih juga terjadi pada paket komponen pihak ketiga. Saat ini kami dalam proses pembuatan komponen baru kami  sebagai berikut:

TdwsAdvDbGrid = class(TAdvDBGrid)
end;

Sehingga memungkinkan bagi kami untuk menambahkan fungsi tambahan ketika dibutuhkan.  Memang betul, saat ini kami belum memerlukan untuk menambahkan fungsi-fungsi baru. Namun peristwa yang kami alami terdahulu menjadi pelajaran berharga buat kami.

Hal tersebut diatas tidak hanya diterapkan untuk fungsi tambahan, namun bisa kita terapkan untuk mensetting  nilai  property tertentu yang berlaku secara global. Misalkan, setiap menggunakan komponen TEdit Anda harus merubah Font ke  nilai tertentu yang telah Anda tetapkan. Maka daripada mengerjakan berulang-ulang merubah font setiap kali Anda meletakkan component TEdit pada form, Anda dapat membuat sendiri suatu komponen, katakanlah TMyEdit, yang dalam kode nya, kita tambahkan kode untuk merubah Font.  Sehingga setiap kali TMyEdit diletakkan pada form, otomatis Font nya telah berganti ke Font yang kita inginkan di awal mula.

interface

uses
  SysUtils, Classes, Controls, StdCtrls;

type
  TMyEdit = class(TEdit)
  public
    constructor Create(AOwner : TComponent); override;
  end;

procedure Register;

implementation
{ TMyEdit }

constructor TMyEdit.Create(AOwner: TComponent);
begin
  inherited;
  Font.Name := 'My Crazy Font';
end;

Dengan demikian, pada dasarnya sudah menjadi keharusan, bahwa seorang developer haruslah bisa membuat aplikasi dan sekaligus mampu membuat komponen. Menghabiskan sedikit waktu untuk mempelajari pembuatan komponen akan membantu meningkatkan kemampuan Anda untuk membuat aplikasi yang besar.

Diterjemahkan secara bebas dari sumber:
http://www.delphifeeds.com/go/f/80691?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+delphifeeds+%28DelphiFeeds.com%29

Oleh: mambamaestro: altaifa-dev.co.cc

  1. #1 by Tulus Budi on Juli 8, 2011 - 9:43 am

    Artikel yg mantabsss…. bener2 menginspirasi bagi pemakai delphi yg slama ini cuman sekedar RAD programmer seperti saya…..

  2. #2 by Abdellah Al-Arief on Juli 13, 2011 - 7:11 am

    sip. belajar terus mas.. ! btw.. domisili dimana mas?

Ikuti

Get every new post delivered to your Inbox.