Saya telah membaca sekitar 4-5 buku tentang pola desain, tetapi saya masih merasa tidak mendekati level menengah dalam pola desain?
Bagaimana saya harus mempelajari pola desain?
Apakah ada buku bagus untuk pola desain?
Saya tahu ini akan datang hanya dengan pengalaman tetapi harus ada cara untuk menguasainya?
design-patterns
anand
sumber
sumber
Jawaban:
Cara terbaik adalah mulai coding dengan mereka. Pola desain adalah konsep hebat yang sulit diterapkan hanya dengan membaca tentang mereka. Ambil beberapa contoh implementasi yang Anda temukan online dan bangun di sekitarnya.
Sumber yang bagus adalah halaman Data & Object Factory . Mereka membahas polanya, dan memberi Anda contoh dunia nyata konseptual dan. Bahan referensi mereka juga bagus.
sumber
Saya membaca tiga buku dan masih tidak memahami pola dengan sangat baik sampai saya membaca Head First Design Patterns oleh OReilly. Buku ini membuka mata saya dan benar-benar menjelaskan dengan baik.
sumber
Dua sen saya untuk pertanyaan lama dan itu
Beberapa orang sudah menyebutkan, berlatih, dan refactoring. Saya percaya urutan yang tepat untuk belajar tentang pola adalah ini:
Kebanyakan orang mengabaikan 1, banyak yang percaya mereka bisa melakukan 2, dan hampir semua orang langsung ke 3.
Bagi saya kunci untuk meningkatkan keterampilan perangkat lunak saya adalah belajar TDD. Mungkin butuh waktu lama untuk coding yang menyakitkan dan lambat, tetapi menulis tes Anda terlebih dahulu tentu membuat Anda banyak berpikir tentang kode Anda. Jika suatu kelas membutuhkan terlalu banyak ketel uap atau mudah patah, Anda mulai memperhatikan bau tidak sedap dengan cepat
Manfaat utama dari TDD adalah Anda kehilangan rasa takut refactoring kode Anda dan memaksa Anda untuk menulis kelas yang sangat independen dan kohesif. Tanpa serangkaian tes yang baik, terlalu menyakitkan untuk menyentuh sesuatu yang tidak rusak. Dengan jaring pengaman Anda akan benar-benar berpetualang menjadi perubahan drastis pada kode Anda. Itulah saat ketika Anda benar-benar dapat mulai belajar dari latihan.
Sekarang sampai pada titik di mana Anda harus membaca buku tentang pola, dan menurut pendapat saya, itu adalah buang-buang waktu untuk berusaha terlalu keras. Saya hanya mengerti pola dengan sangat baik setelah memperhatikan saya melakukan sesuatu yang serupa, atau saya bisa menerapkannya pada kode yang ada. Tanpa tes keamanan, atau kebiasaan refactoring, saya akan menunggu sampai proyek baru. Masalah menggunakan pola dalam proyek baru adalah bahwa Anda tidak melihat dampaknya atau mengubah kode kerja. Saya hanya mengerti pola perangkat lunak begitu saya refactored kode saya ke salah satu dari mereka, tidak pernah ketika saya memperkenalkan satu yang baru dalam kode saya.
sumber
Derek Banas membuat tutorial youtube untuk pola desing yang sangat saya sukai:
http://www.youtube.com/playlist?list=PLF206E906175C7E07
Mereka mungkin sedikit kekurangan waktu, tetapi waktu dan presentasinya membuat mereka sangat senang untuk belajar.
sumber
Berlatih, berlatih, berlatih.
Anda dapat membaca tentang memainkan cello selama bertahun-tahun, dan masih belum bisa membungkuk pada instrumen dan membuat apa pun yang terdengar seperti musik.
Pola desain paling baik diakui sebagai masalah tingkat tinggi; yang hanya relevan jika Anda memiliki pengalaman yang diperlukan untuk mengenalinya sebagai hal yang berguna. Adalah baik bahwa Anda menyadari bahwa mereka berguna, tetapi kecuali Anda telah melihat situasi di mana mereka akan berlaku, atau telah diterapkan, hampir tidak mungkin untuk memahami nilai sebenarnya.
Di mana mereka menjadi berguna adalah ketika Anda mengenali pola desain dalam kode orang lain, atau mengenali masalah dalam fase desain yang cocok dengan suatu pola; dan kemudian memeriksa pola formal, dan memeriksa masalah, dan menentukan apa delta di antara mereka, dan apa yang dikatakan tentang pola dan masalah.
Ini benar-benar sama dengan pengkodean; K&R mungkin menjadi "kitab suci" untuk C, tetapi membacanya dari depan ke belakang beberapa kali tidak memberikan satu pengalaman praktis; tidak ada pengganti untuk pengalaman.
sumber
Praktik praktik praktik. Saya pikir 4 sampai 5 buku bahkan latihan membaca yang berlebihan tanpa latihan yang baik. Saya percaya, cara terbaik untuk melakukan ini adalah mulai refactoring proyek Anda saat ini menggunakan pola. Atau jika Anda tidak memiliki proyek yang sedang Anda kerjakan maka lakukan saja dengan cara Anda sendiri dan kemudian coba refactoring ke pola .
Anda tidak dapat menghargai mereka sepenuhnya jika Anda belum menderita melalui masalah yang mereka pecahkan. Dan harap diingat bahwa itu bukan peluru perak - Anda tidak perlu menghafalnya dan mendorongnya keras untuk menerapkannya dengan cepat. Dua sen saya ..
sumber
Tanyakan pada diri Anda pertanyaan-pertanyaan ini:
Apa yang mereka lakukan?
Apa yang mereka decouple / berpasangan?
Kapan Anda harus menggunakannya?
Kapan sebaiknya Anda tidak menggunakannya?
Fitur bahasa apa yang hilang yang membuat mereka pergi?
Utang teknis apa yang Anda keluarkan dengan menggunakannya?
Apakah ada cara yang lebih sederhana untuk menyelesaikan pekerjaan?
sumber
Saya telah menemukan bahwa agak sulit untuk memahami atau memahami manfaat dari beberapa pola sampai seseorang memahami masalah yang mereka pecahkan dan cara-cara lain (lebih buruk) masalah telah diimplementasikan.
Selain buku-buku GOF dan POSA saya belum benar-benar membaca sehingga saya tidak bisa memberikan rekomendasi lain. Benar-benar Anda hanya perlu memiliki pemahaman tentang masalah domain dan saya pikir banyak pengembang yang kurang berpengalaman mungkin tidak dapat menghargai manfaat dari pola. Ini tidak sedikit melawan mereka. Jauh lebih mudah untuk merangkul, memahami, dan menghargai solusi yang baik ketika seseorang harus berjuang dengan alternatif yang buruk terlebih dahulu.
Semoga berhasil
sumber
Banyak contoh bagus telah diberikan. Saya ingin menambahkan satu:
Salah menerapkan mereka Anda tidak perlu melakukan itu dengan sengaja, itu akan terjadi ketika Anda mencoba menerapkannya dalam Desain-Pola-fit awal Anda. Selama waktu itu, setiap masalah yang akan Anda lihat tampaknya cocok dengan satu pola desain. Seringkali masalah semua tampaknya sesuai dengan pola desain yang sama karena beberapa alasan (Singelton adalah kandidat utama untuk itu).
Dan Anda akan menerapkan polanya dan itu akan baik. Dan beberapa bulan kemudian Anda perlu mengubah sesuatu dalam kode dan melihat bahwa menggunakan pola khusus itu tidak sepintar itu, karena Anda mengkodekan diri sendiri ke sudut dan Anda perlu refactor lagi.
Memang, itu bukan jawaban do-that-and-you-learn-it-in-21-days, tapi menurut pengalaman saya, itu yang paling mungkin memberi Anda wawasan yang baik tentang masalah ini.
sumber
Sudahkah Anda membaca "Pola Desain Dijelaskan", oleh Allan Shalloway.
Buku ini sangat berbeda dari buku-buku pola desain lain karena tidak begitu banyak katalog pola, tetapi terutama menyajikan cara penguraian ruang masalah yang memetakan dengan mudah ke pola.
Masalah dapat diuraikan menjadi dua bagian: hal-hal yang umum dan hal-hal yang bervariasi. Setelah ini selesai, kami memetakan hal-hal umum ke antarmuka, dan hal-hal yang berbeda untuk suatu implementasi. Intinya, banyak pola termasuk dalam "pola" ini.
Misalnya dalam pola Strategi, hal-hal umum diekspresikan sebagai konteks strategi, dan bagian variabel diekspresikan sebagai strategi konkret.
Saya menemukan buku ini sangat memprovokasi berbeda dengan buku-buku pola lain yang, bagi saya, memiliki tingkat kegembiraan yang sama dengan membaca buku telepon.
sumber
Sudahkah Anda mencoba buku Gang of Four?
Pola Desain: Elemen Perangkat Lunak Berorientasi Objek yang Dapat Digunakan Kembali
sumber
Untuk buku, saya akan merekomendasikan Pola Desain Dijelaskan , dan pola Desain Kepala Pertama . Untuk benar-benar mempelajari pola-pola ini, Anda harus melihat kode yang ada. Cari pola apa yang sudah Anda gunakan. Lihatlah aroma kode dan pola apa yang mungkin menyelesaikannya.
sumber
Saya telah memimpin beberapa kelompok diskusi pola desain ( situs kami ) dan telah membaca 5 atau 6 buku pola. Saya sarankan memulai dengan buku Pola Desain Kepala Pertama dan menghadiri atau memulai kelompok diskusi. Buku Head First mungkin kelihatan sedikit Hasboro pada awalnya, tetapi kebanyakan orang menyukainya setelah membaca satu atau dua bab.
Gunakan sumber daya yang luar biasa - Panduan Belajar Joshua Kereivisky untuk Merancang Pola untuk pemesanan pola dan untuk membantu kelompok diskusi Anda. Dari pengalaman, satu perubahan yang saya sarankan untuk pemesanan adalah menempatkan Strategi terlebih dahulu. Sebagian besar pengembang saat ini telah mengalami beberapa inkarnasi baik atau buruk dari Pabrik, sehingga memulai dengan Pabrik dapat menyebabkan banyak percakapan dan kebingungan tentang pola tersebut. pertemuan pertama.
sumber
Saya merekomendasikan HeadFirst DesignPattern. Membaca buku tidak cukup, setelah mengasimilasi konsep yang Anda butuhkan untuk menemukan jawaban untuk banyak pertanyaan muncul di pikiran Anda dan mencoba untuk menemukan aplikasi kehidupan nyata di mana dalam pola ini dapat digunakan. Saya melakukan hal yang sama dan mulai mengajukan pertanyaan bahkan pertanyaan itu terlihat konyol.
sumber
Saran saya akan menjadi kombinasi dari mengimplementasikan beberapa dari mereka dan menganalisis beberapa implementasi dari mereka. Sebagai contoh, di dalam. Net, ada penggunaan pola adaptor jika Anda melihat Adaptor Data, serta beberapa lainnya jika ada yang sedikit menggali kerangka kerja.
sumber
Saya tidak tahu tentang buku terbaik, tetapi para puritan mungkin mengatakan Pola Desain: Elemen Perangkat Lunak Berorientasi Objek yang Dapat Digunakan Kembali
Sejauh favorit pribadi saya, saya suka Head First Design Patterns yang diterbitkan oleh O'Reilly. Itu ditulis dalam suara percakapan yang menarik bagiku. Ketika saya membacanya, saya meninjau kode sumber saya pada saat yang sama untuk melihat apakah itu berlaku untuk apa yang saya baca. Jika ya, saya refactored. Inilah bagaimana saya belajar Rantai Tanggung Jawab.
Praktek - Praktek - Praktek.
sumber
Pola desain hanyalah alat - semacam fungsi perpustakaan. Jika Anda tahu bahwa mereka ada di sana dan perkiraan fungsinya, Anda bisa menggali buku itu saat dibutuhkan.
Tidak ada keajaiban tentang pola desain, dan programmer yang baik menemukan 90% dari mereka untuk diri mereka sendiri sebelum buku apa pun keluar. Untuk sebagian besar, saya menganggap buku-buku itu paling berguna dalam menentukan nama untuk berbagai pola sehingga kita dapat membahasnya dengan lebih mudah.
sumber
Cara saya mempelajari pola desain adalah dengan menulis banyak perangkat lunak yang sangat mengerikan. Ketika saya berusia sekitar 12 tahun, saya tidak tahu apa yang baik atau buruk. Saya baru saja menulis tumpukan kode spageti. Selama 10 tahun ke depan, saya belajar dari kesalahan saya. Saya menemukan apa yang berhasil dan apa yang tidak. Saya secara mandiri menemukan sebagian besar pola desain umum, jadi ketika saya pertama kali mendengar apa pola desain itu, saya sangat bersemangat untuk mempelajarinya, kemudian sangat kecewa karena itu hanya kumpulan nama untuk hal-hal yang sudah saya ketahui secara intuitif. (Lelucon tentang mengajar diri sendiri C ++ dalam 10 tahun sebenarnya bukan lelucon)
Moral cerita: tulis banyak kode. Seperti yang dikatakan orang lain, latihan, latihan, latihan. Saya pikir sampai Anda mengerti mengapa desain Anda saat ini buruk dan mencari cara yang lebih baik, Anda tidak akan memiliki ide yang baik tentang di mana menerapkan berbagai pola desain. Buku-buku pola desain harus memberi Anda solusi yang disempurnakan dan terminologi umum untuk membahasnya dengan pengembang lain, bukan solusi tempel untuk masalah yang tidak Anda mengerti.
sumber
Gagasan yang membaca pola desain, mempraktikkan pengkodean mereka tidak benar-benar akan membantu IMO. Saat Anda membaca buku-buku ini 1. Cari masalah dasar yang dipecahkan oleh pola desain tertentu, dimulai dengan Pola Kreasi adalah pilihan terbaik Anda. 2. Saya yakin Anda telah menulis kode di masa lalu, menganalisis jika Anda menghadapi masalah yang sama dengan pola desain yang bertujuan memberikan solusi. 3. Cobalah mendesain ulang / kode faktor ulang atau mungkin memulai dengan yang baru.
Tentang sumber daya, Anda dapat memeriksa ini
1 adalah awal yang cepat, 2 akan menjadi studi mendalam. 3 akan menjelaskan atau membuat Anda berpikir apa yang Anda pelajari dalam 2 cocok dalam perangkat lunak perusahaan.
2 sen saya ...
sumber
Saya akan berpikir juga sulit untuk mempelajari pola desain. Anda harus tahu lebih banyak tentang OOP dan beberapa pengalaman dengan pengembangan aplikasi menengah hingga besar. Bagi saya, saya belajar sebagai kelompok pengembang untuk berdiskusi. Kami mengikuti Panduan Belajar Untuk Merancang Pola yang telah mereka selesaikan dalam studi pola. Ada C # dan pengembang JavaScript bergabung bersama. Ini hal yang mewah bagi saya adalah kode C # developer menulis dalam JavaScript dan pengembang JavaScript melakukan hal yang sama untuk kode C #. Setelah saya meninggalkan rapat, saya juga meneliti dan membaca beberapa buku di rumah untuk ditinjau. Cara yang lebih baik untuk lebih memahami dan mengingat dalam pikiran saya adalah melakukan blogging dengan contoh-contoh dalam C # dan JavaScript di sini http://tech.wowkhmer.com/category/Design-Patterns.aspx .
Saya akan menyarankan terlebih dahulu sebelum pergi ke masing-masing pola desain, harap dipahami nama pola. Selain itu jika seseorang tahu konsepnya, tolong jelaskan dan berikan satu contoh tidak hanya pemrograman tetapi di dunia baca.
sebagai contoh:
Metode pabrik:
Baca dunia: Saya hanya memberikan uang $ 5, $ 10 atau $ 20 dan itu akan menghasilkan pizza kembali tanpa mengetahui apa-apa tentang bagaimana menghasilkan, saya hanya mendapatkan pizza kecil, sedang atau besar tergantung pada input uang sehingga saya bisa makan atau melakukan apa pun.
Pemrograman: Klien hanya memberikan nilai parameter $ 5, $ 10 atau $ 20 ke metode pabrik dan itu akan mengembalikan objek Pizza kembali. Jadi klien dapat menggunakan objek itu tanpa mengetahui bagaimana prosesnya.
Saya tidak yakin ini bisa membantu Anda. Itu tergantung pada tingkat pengetahuan orang yang bergabung dalam rapat.
sumber
Saya pikir Anda perlu memeriksa beberapa masalah yang Anda temui sebagai pengembang di mana Anda mencabut rambut Anda setelah Anda harus merevisi kode Anda untuk yang ke 10 kalinya karena perubahan desain lagi. Anda mungkin memiliki daftar proyek di mana Anda merasa ada banyak pengerjaan ulang dan rasa sakit.
Dari daftar itu Anda bisa mendapatkan skenario yang ingin diselesaikan Pola Desain. Apakah ada waktu di mana Anda perlu melakukan serangkaian tindakan yang sama pada set data yang berbeda? Apakah Anda harus dapat memiliki kemampuan masa depan untuk suatu aplikasi tetapi ingin menghindari pengerjaan ulang semua logika Anda untuk kelas yang ada? Mulailah dengan skenario itu dan kembali ke katalog pola dan masalah masing-masing yang seharusnya mereka selesaikan. Anda mungkin melihat beberapa kecocokan antara GoF dan perpustakaan proyek Anda.
sumber
Untuk pemula, pola Desain Kepala Pertama akan dilakukan, setelah kita terbiasa dengan semua pola, kemudian mencoba memvisualisasikan objek waktu nyata ke dalam pola-pola itu.
Buku akan membantu Anda memahami konsep-konsep dasar, kecuali sampai Anda telah menerapkannya di dunia nyata Anda TIDAK DAPAT MENJADI MASTER POLA DESAIN
sumber