Baru-baru ini dalam sebuah wawancara, salah satu pertanyaannya adalah 'Mengapa kita menggunakan MVC?' Saya hanya menjawab bahwa itu jauh lebih dekat dengan bagaimana, banyak sistem dunia nyata! Menjelaskan manfaat yang dimilikinya ketika datang ke Maintainability, Skalability dll. Tetapi mereka tidak yakin dan akhirnya mengatakan kepada saya bahwa MVC digunakan terutama karena 'memungkinkan Unit Testing mudah'.
Walaupun saya tahu bahwa mereka adalah poin yang valid, saya masih ragu apakah itu adalah alasan utama karena (i) bahkan jika saya memutuskan untuk tidak menulis Unit Testcases, MVC adalah pilihan yang memungkinkan (ii) Banyak sistem GUI di mana Unit Testcases ada tidak ikuti MVC.
Jadi pertanyaannya adalah 'Apakah Unit Pengujian merupakan tujuan utama Pola MVC?'
EDIT: Saya berasumsi bahwa mereka mungkin menyebutkan kemudahan Test Driven Development / menulis NUnit Testcases. Ini karena kita dapat menulis testcases untuk Model (Asalkan Tampilan mencerminkan perubahan keadaan Model) - tolong perbaiki saya jika saya salah.
Jawaban:
Tujuan utama adalah "pemisahan masalah", karena model, pandangan dan pengontrol semua memiliki tanggung jawab yang berbeda.
The penulis asli kertas Xerox PARC menyatakan bahwa:
Jika pengujian unit adalah tujuan utama, seseorang akan dapat dengan mudah melihat tes unit. Pandangan terhadap lanskap proyek / kerangka kerja pengujian unit akan mengungkapkan bahwa itu sangat bertentangan dengan klaim yang dibuat. Seseorang biasanya akan menggunakan tes integrasi dan fungsional untuk menguji tampilan.
sumber
Menurut pendapat saya, jawabannya adalah tegas 'tidak'. Mungkin ini adalah manfaat utama yang diamati dalam organisasi khusus ini, tetapi saya tidak akan menyebutnya 'tujuan utama'.
Saya kira itu tidak akan terlalu sulit untuk mengimplementasikan MVC dengan cara, itu sangat sulit untuk unit test (heck - cara saya melakukannya untuk pertama kalinya hampir tidak dapat diuji).
Di sisi lain, orang dapat mengatakan bahwa hampir semua pola (tidak termasuk hal-hal seperti Singleton) memfasilitasi pengujian unit, karena mereka paling sering mempromosikan decoupling - tetapi apakah itu 'tujuan utama' mereka? Hampir tidak.
sumber
MVC (seperti sebagian besar pola desain tahu) sudah ada sebelum pengujian unit diketahui. Buku GoF diterbitkan pada tahun 1994 - dan mereka hanya mendokumentasikan pola-pola yang telah digunakan selama bertahun-tahun (jika bukan beberapa dekade) sebelumnya. (Dan tidak disebutkan pengujian unit di dalamnya.) Tentang pengujian unit, saya tidak dapat menemukan waktu yang tepat tentang kapan itu menjadi "publik" - Saya pribadi membacanya di artikel yang terkait dengan Extreme Programming, dan buku XP pertama keluar pada tahun 1999.
Jadi jelas unit testing tidak bisa menjadi tujuan utama dari menemukan / mendokumentasikan pola - sementara itu adil untuk mengatakan bahwa pola, ketika diterapkan dengan baik, memfasilitasi unit testing dengan sangat.
sumber
Saya pikir tidak, kemudahan pengujian unit adalah salah satu manfaatnya, tetapi merupakan bagian dari kumpulan manfaat saat menggunakan MVC beserta alasannya. Mengatakan bahwa ada satu alasan utama untuk menggunakan MVC adalah kesalahan. Sepertinya perusahaan yang bersangkutan memilih MVC untuk memfasilitasi pengujian unit, maka mereka pikir itu adalah alasan utama. Secara pribadi alasan saya menggunakan MVC adalah kesederhanaannya dibandingkan dengan formulir web yang membuatnya lebih mudah untuk dirancang dan dipelihara, tetapi setiap individu / perusahaan akan memiliki alasan sendiri untuk menggunakan teknologi apa pun.
sumber
Di dunia ASP.NET MVC, banyak perbaikan pada ASP.NET telah dimasukkan dalam kerangka itu sendiri. Tujuan utama dari pola desain ini adalah untuk mengisolasi logika bisnis dari antarmuka pengguna agar dapat fokus pada pemeliharaan yang lebih baik, peningkatan kemampuan pengujian, dan struktur yang lebih bersih untuk aplikasi tersebut.
ASP.NET MVC memiliki kemampuan tertentu yang menjadikannya pilihan terbaik untuk memilih jika Anda memerlukan satu atau lebih dari yang berikut:
• Tingkat kontrol yang tinggi atas HTML yang dihasilkan : Tidak seperti Formulir Web, Tampilan di ASP.NET MVC membuat HTML persis seperti yang Anda minta. Baru-baru ini, Formulir Web telah diperbaiki di bidang ini tetapi masih belum memiliki tingkat kontrol yang dimiliki MVC.
• Pengujian unit lebih mudah : Dengan ASP.NET MVC, sangat mudah untuk mengikuti pola pengujian seperti test-driven development (TDD). Karena siklus hidup peristiwa yang kompleks dalam Formulir Web, di atas kerangka kerja berbasis kontrol, TDD jauh lebih mudah dengan MVC.
• Pemisahan masalah : Ini mengacu pada pemisahan semua aspek sistem dengan jelas. Karena pola yang diterapkannya, aplikasi MVC dibagi menjadi beberapa bagian terpisah dan terikat (model, tampilan, dan pengontrol), yang membuatnya mudah dirawat.
Beberapa manfaat lainnya adalah:
• Pola MVC itu sendiri memudahkan pengelolaan kompleksitas dengan memisahkan fungsi aplikasi menjadi tiga bagian inti, model, tampilan, dan pengontrol.
• Aplikasi web ASP.NET MVC tidak menggunakan tampilan negara atau formulir berbasis server. Ini membuat kerangka kerja MVC ideal untuk pengembang yang ingin kontrol penuh atas perilaku aplikasi. Kondisi tampilan bisa menjadi sangat besar, yang merupakan masalah bagi perangkat seperti ponsel cerdas yang menggunakan jaringan lambat (mentransmisikan semua informasi itu bisa sangat lambat). Di halaman Formulir Web, Anda hanya bisa memiliki satu per halaman. Ini adalah batasan yang cukup besar. Di MVC, tidak ada batasan seperti itu - yaitu, Anda dapat memiliki elemen sebanyak yang Anda suka.
• ASP.NET MVC memberikan dukungan yang lebih baik untuk pengembangan yang digerakkan oleh pengujian (TDD).
• ASP.NET MVC berfungsi dengan baik untuk aplikasi web yang didukung oleh tim pengembang besar dan untuk desainer web yang membutuhkan kontrol tingkat tinggi atas HTML. ASP.NET MVC Pemrosesan Permintaan
sumber