Makalenin biraz eski olduğunu düşünüyorum, çünkü okuduğumda bu hiç alışılmadık ya da yeni bir fikir değil. Bu fikir, gerçekten basit bir Gözlemci uygulaması olduğunda, ayrı bir model olarak sunulmaktadır. O sırada ne yaptığımı tekrar düşündüğümde, birbirine bağlı veri içeren bir dizi farklı panelle karmaşık bir arayüzün arkasında oturmak için mantık üzerinde çalıştığımı hatırlıyorum. Kullanıcı değerleri değiştirebilir ve / veya bir optimizasyon yordamı çalıştırabilir ve bu eylemlere dayanarak, kullanıcı arayüzünün dinleyeceği ve gerektiği gibi güncelleyeceği olaylar oluşturuldu. Geliştirme sırasında bazı panellerin gerektiği zaman güncellenmemesi gereken bir takım sorunlar vardı. Düzeltme (tasarımın içinde kalmak) diğer olaylardan olayları oluşturmaktı. Sonuçta, o zamanlar her şey yolunda gidiyordu. hemen hemen her değişiklik tüm panellerin yenilenmesine neden oldu. Belirli bir panelin yenilenmesi gerektiğinde yalıtılmaya çalışılmasının tüm karmaşıklığı boşa çıkmıştı. Ve zaten önemli değildi. Etkili bir erken optimizasyon oldu. Hepsini yenilediği tek bir olaya katlayarak, zamandan ve emekten tasarruf edecektim.
Her şeyi düzeltmek ya da her şeyi yenilemek için tasarlanmış sayısız sistem var. Bir satır ekleyen / güncelleyen ve ardından DB isteğinde bulunan tüm CRUD arayüzlerini düşünün. Bu egzotik bir yaklaşım değil, sadece akıllıca olmayan bir çözüm. Bunun 2003 yılında 'desen ateşinin' yüksekliği olduğunu anlamalısınız. Söyleyebileceğim kadarıyla, insanlar yeni kalıpları isimlendirmenin şöhret ve zenginliklere giden yolu olacağını düşündü. Beni yanlış anlama, bir kalıp kavramının soyuttaki çözümleri tanımlamak için son derece yararlı olduğunu düşünüyorum. İşler biraz raydan çıktı. Talihsizdir çünkü genel olarak kalıp kavramı hakkında çok fazla alaycılık yarattı. Sadece bu bağlamda, bunun hakkında 'geleneksel olmayan' bir çözüm olarak konuşmanın anlamı var. O' ORM'ler veya DI kapları etrafındaki ortodoksiye benzer. Bu araçları kullanmadan çok önce insanlar yazılım geliştirmiş olsalar bile çoğu zaman bu araçlar fazla kullanılmaz olsa da, onları kullanmama alışılmadık bir durum olarak görülüyor.
Yani 'her şeyi düzeltmek' için geri dönelim. Basit bir örnek, hesaplama aracıdır. Basit çözüm sayıları toplamak ve değerlerin önem derecesine göre bölmektir. Bir numara ekler veya değiştirirseniz, en baştan tekrar yapın. Toplamı ve sayı sayısını takip edebilirsiniz ve birisi bir sayı eklediğinde, sayımı artırıp toplamı ekleyin. Şimdi tekrar tüm sayıları eklemiyorsunuz. Excel ile bir aralığa başvuran ve o aralıktaki tek bir değeri değiştiren bir formülle daha önce çalıştıysanız, 'her şeyi düzelt' desenine bir örneğiniz vardır, yani o aralığa referansı olan herhangi bir formül, ne olursa olsun yeniden hesaplanacaktır. bu değer alakalıydı (örneğin, sumif () gibi bir şey kullanarak).
Bu, bunun belirli bir bağlamda akıllıca bir seçim olmadığı anlamına gelmez. Bu örnekte, şimdi güncellemeleri desteklememiz gerektiğini varsayalım. Şimdi eski değeri bir şekilde bilmem ve toplamı yalnızca delta ile değiştirmem gerekiyor. Bunların hiçbiri, bunu dağınık ya da eşzamanlı bir ortamda yapmayı denemeyi düşünene kadar gerçekten zor değil. Artık her türlü sıkıntılı zamanlama sorunuyla başa çıkmak zorundasınız ve muhtemelen yeniden hesaplamadan çok daha fazlasını yavaşlatan önemli bir tıkanıklık yaratmanız gerekecek.
Buradaki sonuç, 'her şeyi düzeltmek' veya 'her şeyi yenilemek' yaklaşımının doğru olması çok daha kolay olmasıdır. Daha sofistike bir yaklaşımın çalışmasını sağlayabilirsiniz, ancak bu çok daha karmaşık ve bu nedenle kusurlu olma ihtimali daha fazla. Ayrıca birçok bağlamda, 'her şeyi yenile' yaklaşımı daha verimli olabilir. Örneğin, yazma yaklaşımlarındaki kopya, tek iş parçacıklı yaklaşımlar için genellikle daha yavaştır, ancak yüksek eşzamanlılık olduğunda, kilitlerden kaçınmanıza izin verebilir ve bu nedenle daha iyi performans sağlayabilir. Diğer durumlarda, değişiklikleri etkili bir şekilde bir araya getirmenize izin verebilir. Bu yüzden çoğu sorun için, neden yapamayacağınız konusunda özel bir nedeniniz yoksa ve ihtiyaç duyduğunuzda daha karmaşık bir şey yapmaktan endişe duymuyorsanız, muhtemelen her şeyi yenileyen bir yaklaşımla başlamak istersiniz.