Dediğiniz gibi, olaylar sınıflar arasındaki bağlantıyı azaltmak için harika bir araçtır; bu nedenle, etkinlikler için yerleşik destek olmadan bazı dillerde ek kod yazmayı gerektirse de, büyük resmin karmaşıklığını azaltır.
Olaylar muhtemelen OO'daki en önemli araçlardan biridir (Alan Kay'a göre - Nesneler mesaj gönderip alarak iletişim kurar ). Etkinlikler için yerleşik desteğe sahip bir dil kullanıyorsanız veya işlevleri birinci sınıf vatandaş olarak görürseniz, bunları kullanmak beyinsizdir.
Yerleşik desteği olmayan dillerde bile, Observer modeli gibi bir şey için kazan plakası oldukça azdır. Ortak uygulama alanını en aza indirmek için tüm uygulamalarınızda kullanabileceğiniz iyi bir genel etkinlik kütüphanesi bulabilirsiniz. (Genel bir olay toplayıcı veya olay aracısı neredeyse her türlü uygulamada kullanışlıdır).
Küçük bir uygulamada değerli mi? Kesinlikle evet diyebilirim .
- Sınıfları birbirinden ayırmak sınıf bağımlılığı grafiğinizi temiz tutar.
- Herhangi bir somut bağımlılığı olmayan sınıflar, testlerdeki diğer sınıflar dikkate alınmadan ayrı ayrı test edilebilir.
- Somut bağımlılığı olmayan sınıflar, tam kapsam için daha az birim testi gerektirir.
Sen düşünme Eğer "Ah ancak yalnızca çok küçük bir uygulama, bu gerçekten önemli değil cidden bu kadar" , göz önünde bulundurun:
- Küçük uygulamalar bazen daha sonra büyük uygulamalarla birleştirilebilir.
- Küçük uygulamaların, daha sonra başka uygulamalarda yeniden kullanılması gerekebilecek en azından bazı mantık veya bileşenleri içermesi muhtemeldir.
- Küçük uygulamalar için gereksinimler değişebilir, bu da mevcut kodun şifresi çözüldüğünde daha kolay olan yeniden düzenleme ihtiyacına neden olabilir.
- Ek özellikler daha sonra eklenebilir ve mevcut kodun genişletilmesi gerekliliğini sorar;
- Gevşek bağlanmış kodun yazılması genellikle sıkı bağlanmış koddan çok daha uzun sürmez; ancak sıkı bir şekilde bağlanmış kodun, yeniden bağlanmış ve test edilmesi gevşek bağlanmış koddan çok daha uzun sürer.
Genel olarak, bir başvurunun büyüklüğü, sınıfların gevşek bir şekilde bir arada tutulup tutulmayacağı konusunda belirleyici bir faktör olmamalıdır; SOLID ilkeleri sadece büyük uygulamalar için değil, her ölçekte yazılım ve kod tabanları için de geçerlidir.
Aslında, gevşek bağlanmış sınıflarınızı ayrı ayrı test etmek için harcanan zaman, bu sınıfları ayırmak için harcanan ek zamanı dengelemelidir.