Yagona javobgarlik prinsipi

Yagona javobgarlik prinsipi(single responsibility principle) – bu dasturlash tilidagi prinsip bo'lib, unga ko'ra har bir modul, klass yoki funksiya dasturdagi biror funksionallikning yagona qismiga javobgar bo'lishi kerak, hamda, bu javobgarlik klass tomonidan to'liq inkapsulyatsiyalangan bo'lishi kerak. Uning barcha vazifalari shu javobgarlikka mustahkab bog'langan bo'lishi kerak. Robert C. Martin bu prinsipni quyidagicha ta'riflaydi: "Klassning o'zgarishiga faqat bitta sabab bo'lishi kerak", garchi "sabab" so'zida biroz chalkashlik bo'lsa ham u oxirgi marta "Bu inson haqidagi prinsip" deb takidlagan.

Tarixi.

Yagona javobgarlik prinsipi atamasi Robert C. Martin tomonidan muallifni mashhur qilgan Agile Software Development, Principles, Patterns, and Practices kitobining Obyektga Yo'naltirilgan Loyihalash prinsiplari bo'limida tushuntirib berildi. Martin bu prinsipni cohesion(kohijn) prinsipiga asoslanayotgani tushuntirdi. 2014-yil Martin "o'zgarishga sabab" iborasini aniqroq tushuntirish maqsadida The Single Responsibility Principle (Yagona javobgarlik prinsipi) nomli maqola yozdi.

Misol.

Martin javobgarlikni o'zgarishga sabab sifatida izohladi hamda klass va modulening o'zgarishiga bitta va faqat bitta sabab bo'lishi kerak. Misol sifatida xabarni kompilyatsiya qiladigan va uni ekranga chiqaradigan modulni ko'raylik. Faraz qiling, shunday modul 2ta sababga ko'ra o'zgara oladi. Birinchisi, xabar tarkibi o'zgaradi. Ikkinchisi, xabar ko'rinishi o'zgaradi. Bu ikkala narsa turli xildagi sabablarga ko'ra o'zgaradi – bittasi asosiy(substantive), ikkinchisi kosmetik(cosmetic). Yagona javobgarlik prinsipiga ko'ra muammoning bu ikkita aspekti alohida ikkita javobgarlik bo'lib hisoblanadi va, shuning uchun ham, ular ikkita alohida klass yoki modulda bo'lishi kerak. Bu ikkita turli xil paytda turli sababga ko'ra o'zgaradigan narsalarni birlashtirish noto'g'ri loyihalashtirish bo'lib hisoblanadi.

Klassni bitta muammoga yo'naltirishga sabab shundaki, bunda klass ancha "mustahkamroq" bo'ladi. Masalan, yuqoridagi misolni davom ettirsak. Xabarni kompilyatsiya qilish jarayonida o'zgarish yuz bersa, chiquvchi kod klassning bir xil qismi bo'lganda, bu kodni buzilishiaga olib keluvchi xavfga sabab bo'ladi.

Manba:


AlisherN

Muallif haqida

AlisherN


Blogdagi so‘nggi maqolalar:


Fikrlar 2

Ertugul
Ertugul
Misollar bilan ko'rsatilsa, yaxshi bo'lardi.
AlisherN
AlisherN
Masalan, faraz qiling siz blog sayt yaratmoqchisiz. Bu saytizda yangiliklar bilan ishlaydigan klass yaratasiz. Bu klass faqat yangiliklarni saytga chiqarishga javobgar bo'ladi. Agar siz shu klass ichida turib bazada joylashgan yangiliklarni olmoqchi bo'sayiz yagona javobgarlik prinsipiga rioya qilmagan bo'lasiz. Bazaga murojaat qilish uchun alohida klass yaratasiz va unga shu vazifani yuklaysiz. Xulosa qilib aytganda, har bir klass faqat bitta yo'nalishdagi vazifani bajaradi. Baza bilan ishlash uchun alohida klass yoki klasslar guruhi, oynaga xabar chiqarish uchun alohida klass va h.k.
Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!