Pola bukanlah blok bangunan - jadi saya tidak seharusnya membangun aplikasi pada pola MVC / MVP?


9

Saya telah membaca halaman ini tentang pola desain, dan bagaimana Anda harus memperlakukannya saat menulis kode Anda. Dari pemahaman saya, sebagaimana judul di tautan menyatakan:

Pola bukanlah blok bangunan.

Jika saya mengerti dengan benar, ini berarti tidak menggunakan pola desain sampai masuk akal untuk melakukannya, benarkan? Jangan memulai dengan mengatakan Anda akan menggunakan Pola Strategi, tunggu sampai Anda menulis beberapa kode, dan jika menggunakan Pola Strategi masuk akal untuk desain Anda, maka gunakanlah.

Apakah saya memperlakukan pola MCV / MVP dengan cara yang sama ketika saya membuat aplikasi GUI? Dari masing-masing tautan, dikatakan bahwa itu adalah pola arsitektur.

Misalkan jika saya membuat aplikasi GUI dan saya tidak menggunakan pola MCV / MVP, tetapi kode saya bersih, dapat dibaca, dan dapat dipelihara, apakah masih bau kode / desain buruk sehingga saya tidak menggunakan pola MCV / MVP ?

Jawaban:


18

Jika saya mengerti dengan benar, ini berarti tidak menggunakan pola desain sampai masuk akal untuk melakukannya, benarkan?

Iya.

Jangan memulai dengan mengatakan Anda akan menggunakan Pola Strategi, tunggu sampai Anda menulis beberapa kode, dan jika menggunakan Pola Strategi masuk akal untuk desain Anda, maka gunakanlah.

Iya. Secara teknis, Anda mungkin menyadari bahwa pola strategi itu sesuai sebelum Anda bahkan menulis kode apa pun, tetapi itu seharusnya karena Anda memikirkan masalah yang sebenarnya dan merancang solusi untuk masalah itu, yang saya asumsikan adalah apa yang Anda maksudkan.

Apakah saya memperlakukan pola MCV / MVP dengan cara yang sama ketika saya membuat aplikasi GUI? Dari masing-masing tautan, dikatakan bahwa itu adalah pola arsitektur.

Ya, MVC / MVP / dll adalah pola arsitektur. Di satu sisi, itu tidak membuat perbedaan karena Anda masih harus hanya menggunakan MVC / MVP / etc ketika mereka masuk akal; ketika itu masuk akal untuk masalah aktual yang Anda coba selesaikan. Di mana itu membuat perbedaan adalah bahwa, karena itu berlaku pada tingkat yang jauh lebih tinggi daripada, katakanlah, pola Strategi, Anda biasanya akan mencari tahu apakah itu masuk akal dan memutuskan apakah Anda akan menggunakannya sebagai bagian dari pekerjaan desain Anda, sebelum menulis banyak kode.

Juga perlu diingat bahwa "MVC / MVP" bukan satu pola tunggal, tetapi keluarga yang sangat besar dari pola terkait, dan tidak ada konsensus tentang apa yang secara tepat dihitung sebagai "MVC" atau "MVP" atau "MVV" atau "MVVM" atau sisa dari sup alfabet terkait.

Misalkan jika saya membuat aplikasi GUI dan saya tidak menggunakan pola MCV / MVP, tetapi kode saya bersih, dapat dibaca, dan dapat dipelihara, apakah masih bau kode / desain buruk sehingga saya tidak menggunakan pola MCV / MVP ?

Tidak sama sekali, karena MVC / MVP / etc tidak tepat untuk setiap aplikasi GUI. Sebagai contoh, beberapa GUI mungkin sangat sederhana sehingga akan sangat berlebihan, atau beberapa GUI mungkin tidak memiliki keadaan persisten untuk dimasukkan ke dalam "model", dll. Ada alasan bagus mengapa keluarga pola sangat populer, tetapi mereka bukan satu-satunya cara untuk menulis perangkat lunak GUI yang baik.

Juga, "bau kode" biasanya berarti sesuatu tentang potongan kode tertentu yang mungkin merupakan gejala dari masalah yang lebih besar. Jika semua kode Anda "bersih, dapat dibaca, dan dipelihara", tanpa pengecualian, maka hampir secara definisi Anda tidak memiliki bau kode apa pun (kecuali mungkin beberapa kode "false positive" bau yang tidak menunjukkan masalah nyata apa pun) ).

Jadi untuk menjawab judul pertanyaan Anda: "Bagaimana memperlakukan Pola MVC / MVP?", Saya akan mengatakan: Baca tentang mengapa pola itu sangat populer, yaitu masalah apa yang mereka coba selesaikan, sehingga di masa depan Anda dapat mengetahui apakah masalah terbaru Anda dapat diselesaikan dengan pola-pola tersebut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.