Meskipun saya tidak pernah mengirim apa pun menggunakan Smalltalk, waktu singkat saya bermain dengannya pasti meninggalkan bekas. Satu-satunya cara untuk menggambarkan pengalaman adalah MVC seperti yang seharusnya. Pada dasarnya, semua pekerjaan berat untuk aplikasi Anda dilakukan di objek bisnis (atau model domain jika Anda cenderung). Kontrol standar terikat dengan objek bisnis dalam beberapa cara. Misalnya, kotak teks dipetakan ke bidang objek (bidang itu sendiri adalah objek sehingga mudah dilakukan). Sebuah tombol akan dipetakan ke suatu metode. Ini semua dilakukan dengan API yang sangat sederhana dan alami. Kita tidak harus berpikir tentang mengikat objek, dll. Itu hanya berfungsi.
Namun, dalam banyak bahasa dan API yang lebih baru Anda dipaksa untuk berpikir dari luar masuk. Pertama dengan C ++ dan MFC, dan sekarang dengan C # dan WPF, Microsoft membuat dunia pengembangnya terhubung dengan pembuat GUI tempat Anda membangun aplikasi dengan mengimplementasikan pengendali acara. . Pengembangan Java Swing tidak begitu berbeda, hanya Anda yang menulis kode untuk membuat instantiate kontrol pada formulir sendiri. Untuk beberapa proyek, mungkin tidak pernah ada model domain - hanya penangan acara. Saya telah berada di dalam dan sekitar model ini untuk sebagian besar karier saya.
Setiap cara memaksa Anda untuk berpikir secara berbeda. Dengan pendekatan Smalltalk, domain Anda cerdas sementara GUI Anda bodoh. Dengan pendekatan VisualStudio default, GUI Anda cerdas sementara model domain Anda (jika ada) agak anemia.
Banyak pengembang yang bekerja dengan saya melihat nilai dalam pendekatan Smalltalk, dan mencoba menyemprotkan pendekatan itu ke dalam lingkungan VisualStudio. WPF memiliki beberapa fitur pengikat dinamis yang memungkinkan; tetapi ada batasannya. Tak pelak beberapa kode yang termasuk dalam model domain berakhir di kelas GUI.
Jadi, ke arah mana Anda mendesain / mengembangkan kode Anda? Mengapa?
- GUI dulu. Interaksi pengguna adalah yang terpenting.
- Domain dulu. Saya perlu memastikan sistemnya benar sebelum kita menempatkan UI di atasnya.
Ada pro dan kontra untuk kedua pendekatan tersebut. Model domain cocok di sana dengan katedral kristal dan pai di langit. GUI cocok di sana dengan cepat dan kotor (terkadang sangat kotor).
Dan untuk bonus tambahan: Bagaimana Anda memastikan kode dapat dipertahankan?