Ben gördüğüm en kötü anti-desen biri bilgisayar belleği yerine geçici depolama olarak bir Veritabanı tablo kullanmayı içerir.
Sorunlu alanın mülkiyeti, açıklamama izin vermiyor, ancak temel sorunu anlamak gerekli değil. Bu, Java'da bir arka uç Veritabanı ile yazılmış bir GUI uygulamasıydı. Belirli girdi verilerini almak, manipüle etmek ve ardından işlenen verileri veritabanına vermekti.
Projemiz, daha sonra işlenmek üzere ara değerleri kaydeden oldukça karmaşık bir algoritmaya sahiptir. Geçici nesneleri ... nesnelerinde kapsüllemek yerine "t_object" gibi bir veritabanı tablosu oluşturuldu. Her değer hesaplandığında, bu tabloya eklendi. Algoritma çalışmayı bitirdikten sonra, tüm ara değerleri seçer ve hepsini tek bir büyük Map nesnesinde işler. Tüm işlemler tamamlandıktan sonra, kaydedilmek üzere işaretlenmiş kalan değerler gerçek veritabanı şemasına eklenir ve "t_object" tablosundaki geçici girişler atılır.
Tablo aynı zamanda benzersiz bir liste gibi kullanıldı, veriler yalnızca bir kez var olabilir. Bu, tabloya Kısıtlamalar uygulamış olsaydık tasarımın iyi bir özelliği olabilirdi, ancak verilerin var olup olmadığını görmek için tüm tabloyu tekrarladık. (Hayır, CONTAINS ile belirtilen maddelerde kullanılan sorguları bile kullanmadık)
Bu tasarım nedeniyle karşılaştığımız bazı problemler özellikle hata ayıklama idi. Uygulama, veriyi bu algoritmaya gelmeden önce önceden işleyecek birden fazla GUI olacak şekilde boru hattı verilerine yapılandırılmıştır. Hata ayıklama işlemi, bir test senaryosunu işlemek ve ardından yukarıdaki bölümü bitirdikten hemen sonra duraklamaktı. Sonra bu tabloda hangi verilerin bulunduğunu görmek için veritabanını sorgulayacağız.
Keşfettiğimiz bir diğer sorun, verilerin bu geçici tablodan düzgün bir şekilde silinmemesidir; bu, gelecekte run'lara müdahale eder. Bunun, İstisnaların düzgün bir şekilde işlenmemesinden ve dolayısıyla uygulamanın düzgün bir şekilde çıkmamasından ve kontrol ettiği tablodaki verileri silmemesinden kaynaklandığını keşfettik.
Temel Nesneye Dayalı Tasarım'ı kullansaydık ve her şeyi Bellekte tutsaydık, yukarıdaki sorunlar asla gerçekleşmezdi. İlk olarak, uygulamadaki kesme noktalarını kolayca ayarlayabildiğimiz ve daha sonra yığın ve yığındaki belleği inceleyebildiğimiz için hata ayıklama basit olurdu. İkincisi, uygulamadan anormal çıkıştan sonra, java belleği, veritabanından silinmesi konusunda endişe etmeden doğal olarak temizlenirdi.
NOT: Bu modelin doğası gereği kötü olduğunu söylemiyorum, ancak bu örnekte temel OO ilkeleri yeterli olduğunda gereksiz olduğunu buldum.
Böyle bir şey ilk kez gördüğüm için bu anti-desen için bir isim olduğundan emin değilim. Bu model için aklınıza gelebilecek iyi isimler var mı?