X
T r a s h :: l o g BETA
{ Chen Hendrawan }
chenz v.A-01 chenz v.T23s chenz v.X0-KZ

Archive for the 'the programmer' Category

real world software development course

Friday, April 6th, 2007

Industry people always mad at computer science fresh graduates. They (students) seems to know nothing about real software development. They might a brilliant for compiler optimization stuff, low level data structure designing, and some other techie stuff, but only in the ideal environment. In university, they never pushed by the client, never told to change the functionality under nearly impossible deadline.

In short, they just need to see the real world before actually jump into that. This is not to prevent them for being frustrated when facing the real problem, but to make them stop thinking with idealistic mindset without considering real world situation.

Here is a quick link every computer science lecturer must read.

However, deep in my heart, I’m still idealist and conservative person :) So the opposite thing is still needed.

macbook

Friday, February 9th, 2007

Akhirnya jadi juga aku beli makbuk, setelah sekian lama menanti datangnya duit yang tak kunjung tiba … :D
Ini postingan pertama dari Macbook-ku tercinta.

Thanks God :) Semoga makbuk ini bisa buat nyari duit juga :)

(tidak ada) interface vs abstract class

Friday, January 26th, 2007

Endy Muhardin menjawab pertanyaan seseorang mengenai bagaimana kita menentukan kapan saatnya menggunakan interface ataukah abstract class.

Dalam sedikit hal saya kurang sepaham, mestinya penjelasan bisa lebih sederhana tanpa perlu menyinggung tentang pattern, karena belum tentu pembaca paham pattern. Dan memang tak perlu paham design pattern untuk memahami perbedaan interface & abstract class.

Saya sendiri menggunakan interface jika ingin class saya dikenal oleh class-class lain, terutama (tak selalu) jika berbeda package / namespace. Interface sesuai namanya berguna untuk menjadi antarmuka atau kontrak antara satu kelas dengan kelas lain. Bahwa class yang mengimplementasikan interface tersebut memiliki method-method tertentu. Contohnya interface java.util.Collection, orang cukup tahu bahwa class-class yang implement interface tersebut akan memiliki method-method seperti add(), remove(), iterator(), dsb.

Menurut saya, jangan pernah membandingkan interface dengan abstract class. Selalu gunakan interface! Selalu gunakan interface untuk memperkenalkan method-method apa saja yang akan diekspos oleh sebuah class. Pikiran mengenai interface ada saat tahap design.

Baru saat implementasi, kita boleh berpikir apakah class-class tersebut akan kita buat abstract atau concrete. Apakah sebuah method punya implementasi yang generik ataukah bahkan belum bisa didefinisikan (abstract) sampai kita beranjak ke hal yang lebih detail implementasi method tersebut pada suatu kasus tertentu (concrete subclass).

Dengan begini, kita nggak perlu bingung toh kapan harus membuat interface atau abstract class :D .

Bagi penganut test-first development, pemahaman seperti ini juga lebih mudah. Pertama buat saja semua interface (dan mungkin dummy factory), kemudian buat test-nya, jadi test kita nggak error saat dicompile. Baru buat implementasinya.