Senior
Andke näiteid 'SOLID' põhimõtete rikkumistest standardraamatukogudes.
sobes.tech AI
Vastus AI-lt
En suure osa Apple'i standardraamatukogudest järgitakse SOLID põhimõtteid kõrgel tasemel. Kuid leidub näiteid, kus nende rakendamine ei ole nii range või on erandeid:
- Ühe vastutuse põhimõte (SRP): Mõned UIKit või Foundation klassid täidavad mitmeid ühendamata ülesandeid. Näiteks võib
UIViewControllerolla vastutav mitte ainult vaadete haldamise eest, vaid ka andmete töötlemise, navigatsiooni jms eest. - Avatus/suletavus põhimõte (OCP): Mõnikord nõuab mõnede standardklasside funktsionaalsuse laiendamine klassi enda muutmist, mitte selle alamklassi loomist või protokolli kasutamist. Näiteks uue funktsionaalsuse lisamine olemasolevale
UITableViewDataSource-le ilma, et oleks võimalik selle käitumist lihtsalt asendada. - Liskovi asenduspõhimõte (LSP): Mõnedes klassi hierarhiates, näiteks žestide töötlemisel (
UIGestureRecognizerja selle alamklassid), ei ole alati võimalik baasklassiga asendada selle alamklassiga ilma käitumist muutmata. - Liidese jagamise põhimõte (ISP): Mõned standardraamatukogude protokollid võivad sisaldada liiga palju meetodeid, millest kõik ei ole vajalikud kõigile nende rakendajatele. Näiteks
UITableViewDelegate-il on palju valikulisi meetodeid. - Sõltuvuse pööramise põhimõte (DIP): Kuigi sõltuvuse süstimine on kaasaegses iOS arendamises aktiivselt kasutusel, võivad vanemate raamatukogude sõltuvused olla rangelt seotud, mis raskendab testimist ja komponentide asendamist.
Oluline on märkida, et need "rikkumised" on sageli kompromissid, mis tulenevad arendusajaloost, jõudlusest või API lihtsustamisest kasutusstsenaariumites. Enamikul juhtudel võimaldab nutikas rakenduse projekteerimine standardraamatukogude peal järgida SOLID põhimõtteid.