Saya memulai proyek grup sekolah di Jawa, menggunakan Swing. Ini adalah GUI langsung pada aplikasi desktop Database.
Profesor memberi kami kode dari proyek tahun lalu sehingga kami bisa melihat bagaimana dia melakukan sesuatu. Kesan awal saya adalah bahwa kode ini jauh lebih rumit dari yang seharusnya, tetapi saya membayangkan programmer sering berpikir ini ketika melihat kode yang tidak hanya mereka tulis.
Saya berharap menemukan alasan mengapa sistemnya baik atau buruk. (Saya bertanya kepada profesor dan dia berkata saya akan melihat nanti mengapa itu lebih baik, yang tidak memuaskan saya.)
Pada dasarnya, untuk menghindari sambungan antara objek, model (logika bisnis), dan pandangannya yang bertahan lama, semuanya dilakukan dengan string. Objek yang bertahan yang disimpan dalam database adalah hashtables dari string, dan model dan tampilan "berlangganan" satu sama lain, memberikan kunci string untuk "peristiwa" yang mereka ikuti.
Ketika suatu peristiwa dipicu, tampilan atau model mengirimkan string ke semua pelanggannya yang memutuskan apa yang harus dilakukan untuk peristiwa itu. Misalnya, dalam salah satu metode pendengar tindakan tampilan (saya percaya ini hanya menetapkan bicycleMakeField pada objek yang dapat bertahan):
else if(evt.getSource() == bicycleMakeField)
{
myRegistry.updateSubscribers("BicycleMake", bicycleMakeField.getText());
}
Panggilan itu akhirnya sampai ke metode ini dalam model Kendaraan:
public void stateChangeRequest(String key, Object value) {
... bunch of else ifs ...
else
if (key.equals("BicycleMake") == true)
{
... do stuff ...
Profesor itu mengatakan bahwa cara melakukan hal-hal ini lebih dapat diperluas dan dipelihara daripada memiliki pandangan cukup memanggil metode pada objek logika bisnis. Dia mengatakan tidak ada hubungan antara pandangan dan model karena mereka tidak tahu keberadaan satu sama lain.
Saya pikir ini adalah jenis sambungan yang lebih buruk, karena tampilan dan model harus menggunakan string yang sama agar dapat bekerja. Jika Anda menghapus tampilan atau model, atau membuat kesalahan ketik dalam string, Anda tidak mendapatkan kesalahan kompilasi. Itu juga membuat kode jauh lebih lama daripada yang saya pikir perlu.
Saya ingin membahas hal ini dengannya, tetapi dia menggunakan pengalaman industrinya untuk membantah setiap argumen yang mungkin saya, siswa yang tidak berpengalaman, buat. Apakah ada beberapa keuntungan dari pendekatannya yang saya lewatkan?
Untuk memperjelas, saya ingin membandingkan pendekatan di atas, dengan memiliki pandangan yang jelas digabungkan dengan model. Misalnya, Anda bisa meneruskan objek model kendaraan ke tampilan, lalu mengubah "make" kendaraan, lakukan ini:
vehicle.make = bicycleMakeField.getText();
Ini akan mengurangi 15 baris kode yang saat ini HANYA digunakan untuk mengatur merek kendaraan di satu tempat, menjadi satu baris kode yang dapat dibaca. (Dan karena operasi semacam ini dilakukan ratusan kali di seluruh aplikasi, saya pikir ini akan menjadi kemenangan besar untuk keterbacaan serta keamanan.)
Memperbarui
Pemimpin tim saya dan saya merestrukturisasi kerangka kerja seperti yang kami inginkan dengan menggunakan pengetikan statis, memberi tahu profesor, dan akhirnya memberinya demo. Dia cukup dermawan untuk membiarkan kita menggunakan kerangka kerja kita selama kita tidak meminta bantuannya, dan jika kita dapat menjaga kecepatan tim kita hingga kecepatan - yang tampaknya adil bagi kita.