Yagona javobgarlik prinsipi

GoD7D1LKfgmRsHdHfahv_9.jpg

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’garirishga sabab” iborasini aniqroq tushuntirish maqsadida The Single Responsibility Principle (Yagona javobgarlik prinsipi) nomli maqola yozdi.

Misol.

Martin javobgarlikni o’zgaririshga sabab sifatida izohladi hamda klass va modulening o’zgarishiga bitta va faqat bitta sabab bo’lishi kerak. Misolda 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: Wikipedia