2008/1/30 abangkis <[EMAIL PROTECTED]>: > > hi josh, kalo gw ngeliat kayaknya lu punya kebiasaan untuk menggeneralisasi > hal-hal spesifik menjadi pandangan semua orang. Menurut gw ini kebiasaan > buruk, karena di IT kita harus selalu melihat suatu masalah dalam context > domainnya, kalo gak nanti kita jadi ignorant dan jatoh di pitfall2 disaat > nerapin solusi yang mirip di domain yang berbeda.
Hehehe. :-d > kalo design by interface menurut gw gak bakal lekang sama hal2 seperti ini, > karena dia itu bukan teknologi tetapi guidelines yang bisa membuat hidup > kita para2 developer ini jadi tidak lebih sulit :P So whatever technology > yang muncul, kemungkinan sih gak bakal bikin guidelines ini jadi obsolete. > > Sejauh yang gw tahu interface pertama kali muncul bukan karena kebutuhan > unit testing, wong unit testing baru rame belakangan ini sedangkan interface > dari sebelum java 1 udah ada. Fungsi utama interface setahu gw adalah untuk > : > 1. Decoupling antara abstraksi sama implementasi, kayaknya udah ada yang > ngasih contoh tentang ini. > 2. Kontrak antara arsitek dengan implementor. Contohnya apa yah, secara > kasar mungkin JDBC, dengan implement interface yang udah di declare oleh > sun, orang2 lain bisa bikin implementasi JDBC-nya masing2. Tanpa orang2 itu > harus kenal atau bahkan mungkin gak pernah komunikasi sama sekali dengan > pembuat arsitektur itu. Bayangin di aplikasi enterprise dimana melibatkan > banyak banget programmer. Isn't this feature will be very2 usefull ? > (mungkin bukan contoh kasus yang baik nih). > 3. Another kind of polymorphism, yang perlu banget bagi OOP soalnya kalo > extends di missuse bisa jadi evil. (di headfirst design patter code to > interface itu gak cuma berarti implement interface aja, abstract juga bisa) > 4. Yang paling terakhir nongol, bagus untuk unit testing. Why ? karena > decoupled, jadi udah jelas unit-unitnya bakal dapat di test secara terpisah. > > Desain yang bagus itu bukan desain yang sekedar cepat diubah (refactoring > dengan bantuan tools bisa mencapai hal ini) tapi desain yang siap menghadapi > perubahan itu. Itu sebabnya walaupun saat desainnya baru ada 1 implementasi, > tapi dengan code to interface kita udah siap terhadap perubahan itu jika > suatu saat dibutuhkan. > > So, masih butuh gak code to interface. In general domain masih butuh lah, if > you want your code to be decoupled (which is good practice) and flexible to > changes in the future. Nah tapi sekarang kalau lu pake annotation, code kita juga bisa decoupled kok. Pendekatan ini yang digunakan oleh EJB3.1 Well di Seam juga gitu sih. Semuanya serba annotation dan gak ada yang tightly coupled. Itu kalau alasan penggunaan interface adalah untuk decoupling. Sekarang ada alasan lain gak untuk design by interface selain untuk decoupling? > side note : kalo eclipsenya bikin ribet code to interface, yah eclipsenya > lah yang diubah, bukan code to interfacenya. Gw udah lama nunggu fitur yang > lu sebut untuk ada di eclipse. Atau udah saatnya pindah ke editor yang > support hal ini. Dah ada blom yah. Gw memilih untuk design by annotation :)) Methodologinya yang gw rubah. Editornya tetap eclipse. Cihuuy. -- It's not going to be like this forever Blog: http://joshuajava.wordpress.com/