2023-03-11 17:07:08
SOLID tamoyillari
SOLID - bu dasturiy ta'minotni ishlab chiqish uchun 5 ta muhim tamoyil hisoblanadi.
S — Single Responsibility
Misol uchun bizda User classi mavjud. Agarda User classi ko'p vazifalarga ega bo'lsa, u xatolar ehtimolini oshiradi. Sababi User classining biror bir qismi o'zgarsa, boshqa qismlarining o'zgarishiga olib kelishi mumkin.
Single Responsibility tamoyilining asosiy maqsadi alohida qismlarga ajratib ishlashga qaratilgan. Misol uchun User classining ikkinchi darajali metodlari alohida yangi classga o‘tkaziladi.
O — Open Closed
Bu tamoyilda class kengaytirishlarga ochiq, o'zgarishlarga esa yopiq bo'lish kerak. Misol uchun bizda qandaydir class mavjud bo'lsa va u classning biror bir metodiga yangi imkoniyat qo'shilsa, o'sha classning metodiga shartlar qo'yib yana uni test qilish uchun hamma qismini test qilishga to'g'ri keladi.
Open Closed tamoyilining asosiy maqsadi shu holatni oldini olish. Yani class biror metod bo'lsa va yangi imkoniyat qo'shilganda yangi class yaratilib u asosiy classning metodidan foydalaniladi. Shunda biz faqatgina oxirgi qo'shgan imkoniyatimizni test qilishga erishamiz.
L — Liskov Substitution
Bu tamoyilga binoan ota class bajara oladigan amallarni bola class ham bajara olish kerak. Agar bola class ota class bajara oladigan amallarni bajara olmasa xatolik yuzaga kelishi mumkin. Tasavvur qiling, Vehicle degan ota class bo'lsa, Car va Bus class'lari bola class hisoblanadi. Endi
Liskov Substitution tamoyiliga binoan Car va Bus ham Vehicle bajara olgan amallarni bajara olishi kerak yoki bir xil turdagi natijani berishi kerak.
I — Interface Segregation
Foydalanuvchi o'ziga kerak bo'lmagan interface'dan foydalanishga majbur bo'lmasligi kerak. Bu tamoyilga binoan umumiy interface'lardan ko'ra bir qancha kichik interface'lar afzalroq. Tasavvur qiling, dasturdan foydalanuvchilarning ba'zilari uchun qandaydir metod kerak bo'lib qoldi. Ammo biz asosiy interface'ni o'zgartirsak qolgan foydalanuvchilar uchun bu metod mavjud bo'lib qoladi, zero ular foydalanishni hohlamasalar ham. Bunday holatda
Interface Segregation'ga amal qilgan holda asosiy interface'dan meros olib yangi metodni qo'shib kerak bo'lgan foydalanuvchilarga taqdim etamiz. Shunda har bir foydalanuvchi o'ziga kerak bo'lgan interface'dan foydalanadi. Va xatoliklar chiqishi ehtimoli kamayadi.
D — Dependency Inversion
High-level level'dagi modullar low-level modullarga qaram bo'lib qolishi kerak emas. Misol uchun Notification class'i mavjud bo'lsa send message va send email metodlari notification'ga emas balki biror bir abstraction'ga tegishli bo'lishi kerak. Yani send message hamda send send email metodlari Messaging class'iga tegishli bo'lishi kerak va Messanging class'i esa Notification class'iga bog'langan bo'lishi kerak.
Maqola foydali bo'lgan bo'lsa do'stlaringizga ulashing!
@usmon_masudjonov
14 views14:07