Sobes.tech
Senior

Standart kitabxanalarda 'SOLID' prinsiplərinin pozulmasına nümunələr verin.

sobes.tech Süni İntellekt

AI-dan cavab

Apple-ın çox standart kitabxanalarında SOLID prinsipləri yüksək səviyyədə yerinə yetirilir. Ancaq, onların tətbiqində o qədər də sərt olmayan və ya istisnalar olan nümunələr tapmaq mümkündür:

  • Yeganə məsuliyyət prinsipi (SRP): UIKit və ya Foundation içində bəzi sinflər bir neçə əlaqəsiz vəzifəni yerinə yetirir. Məsələn, UIViewController yalnız görünüşlərin idarə olunması ilə deyil, həm də məlumatların işlənməsi, naviqasiya və s. ilə məşğul ola bilər.
  • Açıq/qapalı prinsipi (OCP): Bəzi standart sinflərin funksionallığını genişləndirmək bəzən sinfi özündə dəyişdirməyi tələb edir, onun alt sinfini yaratmaq və ya protokol istifadə etmək yerinə. Məsələn, mövcud UITableViewDataSource-a yeni funksionallıq əlavə etmək, onun bəzi davranışlarını asanlıqla dəyişdirmək imkanını məhdudlaşdıra bilər.
  • Liskov yerinə qoyma prinsipi (LSP): Bəzi sinif hierarhiyalarında, məsələn, jestlərin işlənməsi (UIGestureRecognizer və onun alt sinifləri), baz sinfi alt sinfi ilə əvəz etmək hər zaman mümkün olmaya bilər, çünki bu, tətbiqin davranışını dəyişə bilər.
  • İnterfeysların ayrılması prinsipi (ISP): Standart kitabxanalardakı bəzi protokollar çox sayda metod ehtiva edə bilər və bunların hamısı bütün sinflər üçün lazım olmaya bilər. Məsələn, UITableViewDelegate protokolu çox sayda seçimli metoda malikdir.
  • Asılılıqların tərs çevrilməsi prinsipi (DIP): Modern iOS inkişafında asılılıqların injeksiyası geniş istifadə olunsa da, bəzi köhnə framework hissələrində asılılıqlar sıx bağlı ola bilər, bu da test və komponentlərin dəyişdirilməsini çətinləşdirir.

Qeyd etmək lazımdır ki, bu "pozuntular" çox vaxt kompromislərdir, inkişaf tarixçəsi, performans və ya API-nin tipik ssenarilərdə istifadəsini sadələşdirmək üçün qəbul edilir. Əksər hallarda, standart kitabxanalar əsasında ağıllı tətbiq dizaynı SOLID prinsiplərinə riayət etməyə imkan verir.