DEV Community

Cover image for SOLID tamoillari
Nuriddin
Nuriddin

Posted on

SOLID tamoillari

S.O.L.I.D. - obyektga yo'naltirilgan dasturlashda dasturlarni loyihalashning 5 asosiy tamoyilidir. Bu loyihalashda qo'llanilishi mumkin bo'lgan va dasturchi uchun shu loyihada qo'shimchalar, kengaytirishlar, ish jarayoni chiqgan xatolarni to'g'illashni osonlashtiradigan tamoyillardir. Bu tamoyillarni qo'llash va qo'llamaslik dasturchining xohishiga bog'liq. Lekin, bu asosiy tamoyillar loyihalashda loyiga tadbiq qilinsa, ish sifati ancha yuqori bo'ladi. loyiha kodida tartib bo'ladi. Va shu bilan birga bu tamoyillar kodda keraksiz qatorlar va modul, komponentlar bo'lishidan, bir xil kod bir necha marta takrorlanishidan, qoleversa ba'zi hollarda kodni ko'p marotaba refaktoring qilishdan saqlab qoladi.

Demak, asosiy 5 tamoyil izohlari bilan quyida keltirilgan:

SRP (Single responsibility principle)

  • yagona javobgarlik tamoyili, bunda har bir class uchun faqat bitta vazifa yuklanadi. Bu classda metodlar bir nechta bo'lishi mumkin. Bu prinsipni asosiy maqsadi har bir ishni malum bir vazifa bajaradigan alohida classlarga bo'lib bajarish. Shunda dastur kodini malum bir qismiga o'zgartirish kiritsak,faqatgina shu klassdagina o'zgarish bo'ladi, boshqa klasslarga tasir qilmaydi. Klassni o'zgartirishga faqat bitta sabab bo'lishi kerak. Test qilishga ham qulay.

OCP(Open/closed principle)

  • open for extension, closed for modification ya'ni base klassda extension olib yengi featurelar qo'shsa bo'ladi, lekin base klassni modifikatsa(o'zgartirish) mumkin emas.

LSP(Liskov substitution principle)

  • Liskovning o'rin almashtirish tamoyili, bu tamoyil ilk bor amerikalik olima Barbara Liskov tomonidan e'lon qilingan bo'lib, dasturda obyektlarni shu obyekt klassining bola klasslaridan olingan nusxalari bilan almashtirish mumkin bo'ladi va bu dastur natijasini o'zgartirmasligi kerak. Shuning uchun parent klass abstrakt qilib yozilishi kerek.

ISP(Interface segregation principle)

  • interfeyslarga bo'lish tamoyili, hamma holat uchun umumy bo'lgan interfeysdan, har bir mijoz uchun alohida bo'lgan ko'plab interfeyslar yaxshi. Vaqt o'tishi bilan Sizning loyihangiz kengayadi, unga yangi funksiyalar, imkoniyatlar qo'shiladi. Bunda, loyiha boshidan loyiha strukturasi ustidan kuchi nazorat olib borilmasa, loyiha boshida aniq bir funksiyani bajaruvchi metodlar, loyiha oxiriga borib umuman boshqa vazifani bajarishi mumkin;

DIP(Dependency inversion principle)

  • tobelarni almashtirish tamoyili, abstraksiya aniq bir obyektga bog'liq bo'lmasligi kerak, Aksincha, obyekt abstraksiyani qoidalariga bo'ysinishi kerak.

Top comments (0)