Saya pikir artikel ini sedikit ketinggalan jaman karena ketika saya membacanya, ini sebenarnya bukan ide yang tidak lazim atau baru. Ide ini disajikan sebagai pola terpisah ketika itu benar-benar hanya sebuah implementasi Pengamat sederhana. Memikirkan kembali apa yang saya lakukan pada saat itu, saya ingat bekerja pada logika untuk duduk di belakang antarmuka yang agak rumit dengan sejumlah panel berbeda dengan data yang saling bergantung. Pengguna dapat mengubah nilai dan / atau menjalankan rutin optimasi dan berdasarkan pada tindakan-tindakan itu, peristiwa dihasilkan bahwa UI akan mendengarkan dan memperbarui sesuai kebutuhan. Ada sejumlah masalah selama pengembangan di mana panel tertentu tidak akan memperbarui kapan mereka seharusnya. Cara mengatasinya (tetap dalam desain) adalah untuk menghasilkan acara dari acara lain. Pada akhirnya, pada saat semuanya bekerja dengan baik, hampir setiap perubahan menghasilkan semua panel untuk di-refresh. Semua kerumitan mencoba mengisolasi ketika panel tertentu perlu menyegarkan tidak ada gunanya. Lagi pula itu tidak masalah. Itu efektif optimasi prematur. Saya akan menghemat banyak waktu dan upaya dengan hanya menciutkan semuanya menjadi satu peristiwa yang menyegarkan segalanya.
Ada banyak sekali sistem yang dirancang dalam "memperbaiki semuanya" atau menyegarkan segalanya dengan cara apa pun. Pikirkan semua antarmuka CRUD yang menambah / memperbarui satu baris dan kemudian meminta DB. Ini bukan pendekatan yang eksotis, itu hanya solusi yang tidak cerdas. Anda harus menyadari bahwa pada tahun 2003, itu adalah puncak 'demam pola'. Dari apa yang bisa saya katakan, orang-orang berpikir penamaan pola baru akan menjadi jalan mereka menuju ketenaran dan kekayaan. Jangan salah paham, saya pikir konsep suatu pola sangat berguna untuk menggambarkan solusi secara abstrak. Hal-hal seperti agak keluar dari rel sedikit. Sangat disayangkan karena menciptakan banyak sinisme tentang konsep pola pada umumnya. Hanya dalam konteks ini masuk akal untuk membicarakan ini sebagai solusi 'tidak lazim'. Saya t' Mirip dengan ortodoksi di sekitar ORM atau wadah DI. Tidak menggunakan mereka dipandang sebagai tidak lazim meskipun orang telah membangun perangkat lunak jauh sebelum alat ini ada dan dalam banyak kasus alat tersebut berlebihan.
Jadi kembalilah ke 'perbaiki semuanya'. Contoh sederhana adalah cara menghitung. Solusi sederhana adalah dengan menjumlahkan angka dan membaginya dengan kardinalitas nilai-nilai tersebut. Jika Anda menambah atau memodifikasi angka, Anda cukup melakukannya lagi, dari awal. Anda bisa melacak jumlah dan jumlah angka dan ketika seseorang menambahkan angka, Anda menambah jumlah dan menambahkannya ke jumlah. Sekarang Anda tidak menambahkan kembali semua angka lagi. Jika Anda pernah bekerja dengan Excel dengan rumus yang mereferensikan rentang dan mengubah nilai tunggal dalam rentang itu, Anda memiliki contoh pola 'perbaiki semuanya' yaitu rumus apa pun yang memiliki referensi ke rentang itu akan dihitung ulang terlepas dari apakah nilai itu relevan (misalnya menggunakan sesuatu seperti sumif ()).
Ini bukan untuk mengatakan ini bukan pilihan cerdas dalam konteks yang diberikan. Dalam contoh rata-rata, katakanlah sekarang kita perlu mendukung pembaruan. Sekarang saya perlu tahu nilai lama entah bagaimana dan hanya mengubah jumlah dengan delta. Tidak satu pun dari ini yang benar-benar menantang sampai Anda mempertimbangkan untuk mencoba melakukan ini dalam lingkungan yang didistribusikan atau bersamaan. Anda sekarang harus menangani semua jenis masalah waktu berduri dan Anda mungkin akan akhirnya menciptakan kemacetan besar yang memperlambat segalanya jauh lebih banyak daripada menghitung ulang.
Hasilnya di sini adalah bahwa pendekatan 'memperbaiki semuanya' atau 'menyegarkan semuanya' jauh lebih mudah untuk diperbaiki. Anda dapat membuat pendekatan yang lebih canggih bekerja tetapi jauh lebih rumit dan karena itu lebih cenderung cacat. Selain itu dalam banyak konteks, pendekatan 'menyegarkan semuanya' bisa lebih efisien. Sebagai contoh, salin pada pendekatan menulis umumnya lebih lambat untuk pendekatan single-threaded tetapi ketika Anda memiliki konkurensi tinggi, itu dapat memungkinkan Anda untuk menghindari kunci dan karenanya memberikan kinerja yang lebih baik. Dalam kasus lain, ini dapat memungkinkan Anda untuk mengumpulkan perubahan secara efisien. Jadi untuk sebagian besar masalah, Anda mungkin ingin memulai dengan pendekatan refresh segalanya kecuali Anda memiliki alasan spesifik mengapa Anda tidak dapat melakukannya dan kemudian khawatir tentang melakukan sesuatu yang lebih kompleks setelah Anda membutuhkannya.