Apakah Anda dapat menerapkan pola desain dalam tenggat waktu yang ketat?


8

Saya bertanya-tanya, dalam tenggat waktu yang ketat, siapa yang punya waktu untuk menerapkan pola desain? Ini lebih banyak pekerjaan dan pemrograman overhead untuk memperbaikinya pertama kali dan dalam kerangka waktu. Saya tahu bahwa itu memiliki keuntungan jangka panjang, tetapi apakah Anda dapat menerapkan pola desain dengan benar ketika klien duduk di atas kepala Anda dan tekanan tumbuh.

Saya pikir begitu versi pertama Anda dirilis dan Anda punya banyak waktu untuk rilis berikutnya, daripada yang dapat Anda pikirkan untuk meningkatkan kualitas kode dan pengelolaan dengan pola desain.


3
"Setelah [...] Anda punya banyak waktu untuk rilis berikutnya ..." - bukankah ini seperti mengatakan "begitu neraka membeku ..."?
nikie

1
Kedengarannya seperti merah, hijau, refactor.
Pekerjaan

Jawaban:


31

Ini lebih banyak pekerjaan dan pemrograman overhead untuk memperbaikinya pertama kali dan dalam kerangka waktu.

Itu salah.

Tanpa manfaat dari seseorang yang telah memikirkan pola desain, dan menjelaskan dan mendokumentasikannya, itu akan menjadi dua kali lebih sulit.

Pola desain menyederhanakan semua pemikiran dan bertanya-tanya dan memutuskan.

Anda tidak perlu menemukan sesuatu yang baru. Anda dapat menggunakan sesuatu yang sudah dipahami dengan baik oleh Anda dan orang lain.


Mungkin Anda lebih suka menggunakan kerangka kerja yang sudah jadi seperti MVVM Lite Toolkit atau OpenRasta?
RPK

2
@RPK: Tidak. Pola desain membuat pemrograman lebih mudah dengan menyediakan cara untuk memahami masalah dan cara untuk memecahkan masalah. Kerangka kerja dibangun berdasarkan pola desain, tetapi tidak masalah. Saya menggunakan pola desain di dalam kerangka kerja dan kerangka luar sepanjang waktu.
S.Lott

Saya pikir komentar itu lebih tentang melakukan sesuatu yang cepat dan kotor untuk saat ini daripada melakukannya dengan cara terbaik.
unholysampler

2
@RPK: "Ketika kami tidak menggunakannya, apakah kami tidak dapat menulis aplikasi yang lebih baik?" Tidak. Saat ini ada banyak programmer yang tidak tahu banyak pola desain dan mengimplementasikan perangkat lunak buruk secara perlahan. Ketika mereka mempelajari pola desain, mereka menulis perangkat lunak yang lebih baik dengan lebih cepat.
S.Lott

2
@Chad: "Anda masih dapat menulis perangkat lunak yang buruk menggunakan pola desain". Karena ini berlaku secara universal tentang setiap teknologi, ini adalah tautologi. Tampaknya tidak membantu mengulanginya, karena selalu benar.
S.Lott

13

Pola desain memungkinkan Anda untuk berpikir lebih sedikit. Itu benar-benar intinya. Ada sedikit dikotemik palsu yang tersirat dalam pertanyaan itu. Ini menunjukkan bahwa Anda menggunakan pola desain, atau tidak menggunakan pola sama sekali. Pilihan yang sebenarnya adalah antara menggunakan pola yang dibuat atau pola buatan sendiri. Terkadang desain Anda akan lebih baik daripada pendekatan yang direkomendasikan, tapi ... biasanya tidak. Mengapa harus melalui semua pekerjaan memecahkan masalah yang telah dipecahkan dengan baik. Versi setengah matang Anda sendiri hampir tidak akan pernah sebagus ini, dan Anda harus membuang semua pemikiran yang berpikir itu.


3
+1: "Pola desain memungkinkan Anda untuk berpikir lebih sedikit."
S.Lott

Sepakat. Gaya buatan rumah dengan kemampuan reuse yang sederhana bekerja dengan baik bagi saya selama bertahun-tahun. Hingga saat ini saya tidak menemukan masalah dalam penskalaan dan pemeliharaan aplikasi. Saya pasti ingin mengikuti pola yang sudah ada, tetapi sekali lagi itu mengharuskan saya cukup dewasa sebagai polanya. Jika Anda memiliki pemahaman menyeluruh tentang pola yang sudah mapan, jalannya mudah, jika tidak, Anda tidak dapat memenuhi waktu sesuai dengan buku dan forum.
RPK

Pola desain yang tepat memungkinkan saya untuk berpikir lebih sedikit. Anehnya, saya tidak pernah perlu mengunjungi internet untuk mencari nama derai desain yang sesuai untuk saya gunakan. Saya baru saja menemukan cara untuk refactor kode tanpa mengetahui nama-nama pola yang baru saja saya panggil. Ini tidak demikian dengan struktur data dan algoritma. Menemukan kembali itu akan sangat sulit, dan dengan demikian masuk akal untuk belajar dari orang lain. Pola desain sebagian besar akal sehat. Banyak yang harus dan beberapa bagian dari perpustakaan atau bahasa. Beberapa pola desain muncul karena keterbatasan bahasa OO khas.
Pekerjaan

8

Dalam pengalaman saya, cepat & kotor adalah sebuah oxymoron. Setiap saat Anda dapat menghemat dengan menghemat desain hampir selalu dikonsumsi oleh debugging tambahan.


2
+1: Cepat dan Kotor adalah Oxymoron , tidak bisa lebih pendek! Saya telah melihat terlalu banyak orang yang mulai menerapkan sekarang . Kami adalah pengembang, dan karenanya kami menulis kode, tetapi itu tidak berarti bahwa semua yang kami lakukan adalah mengetik pada keyboard. Berpikir dulu bukan buang-buang waktu ...
Matthieu M.

+1: "Cepat dan Kotor: sekarang" menjadi "Lambat dan Kotor: jangka panjang", "Lambat dan Bersih: sekarang" menjadi "Cepat dan Bersih: istilah jangka panjang" ;-)
umlcat

@ Kararl: Saya tidak ingin menyebutkan beberapa perusahaan karena namanya ada di Fortune 50. Baru-baru ini seorang karyawan mengatakan kepada saya bahwa perusahaan membayar harga yang lumayan untuk pola penerapan yang buruk. Itu hanya menyimpan aplikasi. berlari tanpa memikirkan manfaat penskalaan di masa depan. Proyek harus dikirim sebelum batas waktu dan tidak ada waktu untuk meningkatkan kualitas.
RPK

Tidak ada yang mengklaim bahwa hanya menggunakan pola desain memastikan kualitas, tetapi memiliki desain yang tepat di depan tidak hanya membantu kualitas jangka panjang, itu membuatnya lebih mudah untuk mendapatkan versi pertama keluar pintu lebih cepat. Jika pola desain yang mewah menghalangi hal itu, Anda salah melakukannya.
Karl Bielefeldt

4

Jangan berkomitmen pada tenggat waktu yang tidak memberi Anda cukup waktu untuk melakukan hal-hal yang benar. Anda harus membayar kembali hutang teknis pada akhirnya, dan semakin banyak kode yang Anda miliki sebelum Anda mulai memasukkan kembali hal-hal menjadi desain yang waras, semakin sulit. Itu berarti lebih banyak pekerjaan dan pemrograman overhead.


Lol. Itu baik-baik saja.
RPK

2

Daftar pola desain sangat panjang (orang suka memberi nama benda). Bahkan jika Anda tidak memikirkan "Oke, saya menggunakan _ di sini", hal yang Anda lakukan kemungkinan adalah pola yang seseorang beri nama. Semakin banyak Anda memprogram, semakin banyak Anda akan memiliki gagasan tentang bagaimana melakukan sesuatu dan semakin sedikit Anda harus khawatir tentang pola apa yang Anda gunakan.


1
Iya. Bahkan Skrip Transaksi adalah pola desain. Penamaan pola hanya memfasilitasi percakapan.
pdr

2

Saya pikir begitu versi pertama Anda dirilis dan Anda punya banyak waktu untuk rilis berikutnya, daripada yang dapat Anda pikirkan untuk meningkatkan kualitas kode dan pengelolaan dengan pola desain.

Saya berbagi situasi yang sama. Untuk pemeliharaan aplikasi, mungkin diperlukan refactoring yang luas untuk membuat pola desain bermanfaat. Jika ada downtime besar di tikungan maka yang terbaik untuk menunda sampai Anda punya waktu untuk memperbaiki masalah.

Apalagi jika klien menuntut suatu produk kemarin. Segitiga kualitas perangkat lunak ada apakah Anda mengakuinya atau menyadarinya. "Melakukannya dengan benar pertama kali" seringkali membutuhkan perencanaan awal yang berat termasuk persyaratan yang baik dan ruang lingkup yang rendah. Ini berarti klien harus bersedia untuk berpartisipasi aktif dalam keberhasilan proyek bersama.

Juga perlu diingat bahwa OO 101 mengharuskan seseorang untuk membuat bagian sampai persyaratan lengkap. LALU refactor, kalau tidak Anda hanya memutar roda Anda.


2

Bukanlah lebih banyak pekerjaan dan overhead untuk memperbaikinya pertama kali.

Jika tidak rusak kemungkinan itu tidak akan diperbaiki. Dan tidak benar bukan berarti harus rusak. Akan selalu ada hal lain yang perlu dilakukan. Jadi Anda akan menghabiskan lebih banyak waktu untuk mendukungnya dan lebih sedikit waktu untuk memperbaikinya atau membuat sesuatu yang baru.

Tidak hanya melakukan itu dengan benar tidak membutuhkan waktu lebih lama daripada melakukan yang salah. Ini mungkin muncul dalam jangka pendek seperti Anda tidak memenuhi tenggat waktu atau tonggak sejarah. Tetapi pada akhirnya semuanya bersatu dalam jumlah waktu yang sama. Tetapi kualitas Rilis QA pertama akan jauh melampaui rilis qa pertama dari kursi celana. Ini akan mengurangi pengerjaan ulang sebelum rilis. Pada akhirnya melakukannya dengan benar tidak hanya mengikat, ia menang setiap saat.


2

Kemungkinannya adalah, jika Anda membutuhkan waktu lebih lama untuk menerapkan pola desain, maka pola yang Anda coba gunakan tidak cocok untuk masalah yang Anda coba selesaikan. Anda tidak mendapatkan "poin bonus" dalam ulasan kode Anda berikutnya untuk menerapkan pola baru, intinya adalah untuk dapat lebih mudah mengidentifikasi cara-cara yang terbukti untuk memecahkan masalah umum. Pola desain adalah cara bagi orang untuk berbagi pendekatan untuk masalah ini, dan dapat membicarakannya secara umum.


Satu-satunya Bonus Point adalah bahwa saya selalu melakukannya dengan benar untuk kedua kalinya. Ini karena setelah beberapa bulan penempatan, saya dan klien sama-sama menyadari apa yang kami inginkan. Banyak orang akan marah dengan kebodohan ini, tetapi memang begitu.
RPK

2

Sangat mungkin bahwa Anda sudah menggunakan pola desain, mereka hanya klasifikasi formal untuk konsep arsitektur yang sering berulang.

Untuk menggunakan analogi konstruksi - di mana Anda dapat menyebut bagian tertentu dari bangunan Anda sebagai "bagian yang menahan hujan dan panas", seseorang yang berpengalaman dalam bangunan hanya akan menyebut bagian itu "atap". Tidak ada kerugian yang bisa saya lihat dalam menerapkan "atap" di rumah sebagai lawan menerapkan "bagian yang mencegah hujan dan panas masuk"

Overhead utama adalah mencari tahu apa pola desain cocok di mana, karena mereka sering sangat abstrak ketika dilihat di luar konteks. Anda hampir pasti menggunakan Fasad / Pabrik kecuali Anda sedang menulis prosedural. Saya menemukan Pengamat, Strategi dan Pabrik yang paling mudah untuk memulai.


Saya suka interpretasi ini. "Pola desain" telah menjadi semacam slogan HR yang seringkali hanya berarti "masalah yang sudah dipecahkan seseorang". Proses mengidentifikasi apakah solusi Anda mendapat manfaat dari penerapan pola desain bernilai hanya karena memaksa Anda untuk memikirkan masalah Anda secara abstrak. Jika Anda tidak melakukan ini, sangat mungkin Anda tidak benar-benar memahami masalah yang diminta untuk Anda selesaikan.
Stefan Mohr

1

Seperti orang lain catat, melakukan yang benar pertama kali tentu saja paling murah. Tetapi saya juga akan menunjukkan bahwa setiap pemrograman membangun apapun jatuh di suatu tempat pada pola-pola anti-spektrum. Anda bisa mengimplementasikan sesuatu dengan tertib atau tidak; kode 'goto' penuh mengikuti pola, itu hanya sesuatu yang diakui sejak awal sebagai berpotensi berbahaya. Tetapi perhatikan bahwa semua kode bermuara ke lompatan dan cabang di beberapa titik dalam siklus kompilasi. Tidak ada yang salah dengan melompat: itu hanya membuat proyek yang lebih besar lebih sulit untuk dipahami.

Mudah disesatkan oleh pola yang tampak sepele untuk kasus penggunaan sederhana. Segera setelah Anda mulai membutuhkan lebih banyak fleksibilitas, sebagian besar pola getas akan berubah menjadi pola anti. Jadi aturan saya adalah hanya menulis kode yang dapat saya mengerti dan memiliki peluang yang wajar untuk debugging. Jika saya memutuskan untuk menerapkan pola pintar secara membabi buta, saya harus setidaknya sama pintar dengan pola-kode untuk men-debug itu. Jadi kuncinya adalah memastikan Anda mengisolasi dan memanfaatkan pola yang berlaku khusus untuk masalah Anda secara langsung, bahwa Anda mendekati masalah pada tingkat abstraksi yang tepat, dan bahwa Anda dapat memahami dan men-debug setiap baris dalam kode Anda.

Salah satu kunci di sini adalah menyeimbangkan keseimbangan yang tepat antara persyaratan jangka pendek dan jangka panjang. Perlu diingat bahwa menulis kode yang baik dengan cepat adalah sesuatu yang dimulai dari pola yang dipahami dengan baik tentunya dapat membantu - kode spageti mungkin tampak lebih cepat, terutama pada awalnya. Tetapi Anda akan segera melihat keterbatasan pola anti dalam proyek yang lebih besar, di mana dekomposisi, modularitas, dll., Menjadi sangat penting.


1

Saya menentang arus dan mengatakan bahwa mereka dapat membantu tetapi paling sering sakit ketika dalam keadaan yang Anda gambarkan.

Mereka membantu JIKA Anda sangat terbiasa dengan mereka DAN (Anda memiliki cakupan tes yang baik dari semua bagian yang akan efektif ATAU ini adalah pengkodean bidang hijau).

Tapi, sungguh, jika Anda mengajukan pertanyaan ini maka Anda juga A. Jangan menggunakan pola sebagai cara alami untuk melakukan sesuatu (karena jika Anda melakukannya Anda tidak akan berpikir untuk bertanya, Anda hanya akan melakukannya tanpa berpikir) ATAU B. Kode sangat tidak kompatibel dengan penerapan pola dalam jumlah yang diberikan sehingga tidak realistis untuk menggunakan pola.


The code is so incompatible to the implementation of the patternJika itu masalahnya, maka itu merupakan pilihan pola yang buruk, atau kode tidak menyelesaikan masalah. Anda memilih pola yang memecahkan masalah yang Anda hadapi, jangan coba-coba pola sepatu sebanyak mungkin ke dalam proyek untuk hak-hak membual!
Joel C

Jawabannya adalah C: Saya masih tidak percaya diri dan cukup sehat untuk mengimplementasikannya dalam proyek produksi. Seperti yang saya tulis di suatu tempat di atas, resep buatan sendiri bekerja dengan baik dan tidak pernah ada masalah dengan penskalaan dan penggunaan kembali. Saya benar-benar ingin mengikuti standar industri tetapi tidak tanpa pemahaman mendalam tentang subjek ini.
RPK

1

Tidak. Tampaknya perlu waktu untuk menerapkan praktik terbaik (Pola Desain, MVC, di mana pun) ke masalah, dan bukan karena saya atau pengembang lain tidak tahu Pola Desain dengan baik.

Beberapa praktik yang baik ini, dapat diterapkan bahkan jika Anda terburu-buru, tetapi, sistem yang baik, membutuhkan waktu untuk merancang.

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.