Sobes.tech
Senior

Standart kütüphanelerde 'SOLID' ilkelerinin ihlaline örnekler veriniz.

sobes.tech yapay zeka

AI'dan gelen yanıt

Apple’ın çoğu standart kütüphanesinde SOLID ilkeleri yüksek seviyede uygulanmaktadır. Ancak, uygulamalarında bu ilkelerin o kadar katı olmadığı veya istisnalar içeren örnekler bulunabilir:

  • Tek sorumluluk ilkesi (SRP): UIKit veya Foundation içindeki bazı sınıflar, birden fazla ilgisiz görevi yerine getirir. Örneğin, UIViewController sadece görünüm yönetimiyle değil, aynı zamanda veri işleme, navigasyon gibi görevlerle de ilgilenebilir.
  • Açık/Kapalı ilkesi (OCP): Bazı standart sınıfların işlevselliğini genişletmek bazen sınıfın kendisini değiştirmeyi gerektirir, alt sınıf oluşturmak veya protokol kullanmak yerine. Örneğin, mevcut UITableViewDataSource'a yeni işlevsellik eklemek, davranışının bir bölümünü kolayca değiştirmeyi engelleyebilir.
  • Liskov Yerine Koyma İlkesi (LSP): Bazı sınıf hiyerarşilerinde, örneğin, dokunma olaylarını işleyen (UIGestureRecognizer ve alt sınıfları), temel sınıfın yerine alt sınıfını kullanmak her zaman mümkün değildir, çünkü bu uygulamanın davranışını değiştirebilir.
  • Arayüzlerin Ayrımı İlkesi (ISP): Standart kütüphanelerdeki bazı protokoller çok fazla yöntem içerebilir ve bunların tümü, uygulayan sınıflar tarafından gerekebilir. Örneğin, UITableViewDelegate protokolü birçok isteğe bağlı metoda sahiptir.
  • Bağımlılıkların Tersine Çevirme İlkesi (DIP): Modern iOS geliştirmede bağımlılık enjeksiyonu yaygın olarak kullanılsa da, bazı eski framework bölümlerinde bağımlılıklar sıkı sıkıya bağlı olabilir, bu da testleri ve bileşenlerin değiştirilmesini zorlaştırır.

Bu "ihlaller" genellikle, geliştirme tarihi, performans veya API kullanımını basitleştirmek amacıyla alınmış tavizlerdir. Çoğu durumda, standart kütüphaneler üzerine akıllı bir uygulama tasarımı, SOLID ilkelerine uyumu sağlar.