Sobes.tech
Senior

Маслиҳат диҳед, ки намунаҳои вайрон кардани принсипҳои 'SOLID' дар китобхонаҳои стандартӣ.

sobes.tech AI

Ҷавоб аз AI

Принципҳои SOLID дар бештари китобхонаҳои стандартии Apple дар сатҳи баланд риоя мешаванд. Аммо, метавон мисолҳоро ёфт, ки дар онҳо татбиқи онҳо он қадар қатъӣ нест ё истисноҳо мавҷуданд:

  • Принсипи масъулияти ягона (SRP): Баъзе синфҳо дар UIKit ё Foundation чанд вазифаи номуносибро иҷро мекунанд. Масалан, UIViewController метавонад масъул набудани танҳо барои идоракунии намоишҳо, балки барои коркарди маълумот, навигатсия ва ғайра бошад.
  • Принсипи кушод/банд (OCP): Тарғиби функсионалӣ дар баъзе синфҳои стандартӣ баъзан талаб мекунад, ки синфро тағир диҳед, ба ҷои он ки синфро зерсохт ё протоколро истифода баред. Масалан, илова кардани функсионалияти нав ба UITableViewDataSource мавҷударо бе имконияти осон иваз кардани қисми рафтори он.
  • Принсипи ивазкунӣ Лисков (LSP): Дар баъзе ҳиерархияҳои синфҳо, масалан, дар коркарди жестҳо (UIGestureRecognizer ва зерсохтҳои он), ҳамеша имконнопазир аст, ки синфи асосиро бо зерсохташ иваз кунед бе тағир додани рафтори барнома.
  • Принсипи ҷудоии интерфейсҳо (ISP): Баъзе протоколҳо дар китобхонаҳои стандартӣ метавонанд дорои бисёр методҳо бошанд, ки ҳамаашон барои ҳама синфҳое, ки онҳоро татбиқ мекунанд, зарурӣ нестанд. Масалан, протоколи UITableViewDelegate, ки дорои бисёр методҳои интихобӣ мебошад.
  • Принсипи инверсияи вобастагиҳо (DIP): Гарчанде ки injection dependency дар рушди муосир барои iOS фаъолона истифода мешавад, дар баъзе қисмҳои кӯҳнаи рамзҳо вобастагиҳо метавонанд сахт пайваст бошанд, ки тест ва иваз кардани компонентҳоро душвор месозад.

Муҳим аст, ки қайд кардан, ки ин "қаллобӣ" аксар вақт компромисҳо мебошанд, ки аз таърихи рушд, иҷроиш ё барои содда кардани истифодаи API дар сценарияҳои оддӣ вобастаанд. Дар бисёр ҳолатҳо, тарҳрезии оқилонаи барнома дар асоси китобхонаҳои стандартӣ имкон медиҳад, ки принсипҳои SOLID риоя шаванд.