Yagona mas'uliyat printsipi
Ibragimov DiyorbekYagona mas'uliyat printsipi (Single Responsibility Principle, SRP) – bu SOLID tamoyillaridan biri bo‘lib, har bir sinf (class) faqat bitta vazifani bajarishi kerakligini aytadi. Boshqacha aytganda, sinfning o‘zgarishi uchun faqat bitta sabab bo‘lishi kerak. Bu tamoyil kodni oson tushunish, kengaytirish va test qilish imkonini beradi.
SRP ning foydasi shundaki, kodni modular shaklda yozishga yordam beradi, ya'ni har bir qism o'zining aniq vazifasini bajaradi. Agar kodda o'zgarish kerak bo‘lsa, faqat shu aniq qism o‘zgaradi, bu esa boshqa qismlarga ta'sir qilmaydi.
Misol
Quyida yagona mas'uliyat printsipiga amal qilmagan kodni ko‘ramiz:
php
Копировать код
class User {
public function __construct(private $name) {}
public function getName() {
return $this->name;
}
public function save() {
// Foydalanuvchini bazaga saqlash
echo "Foydalanuvchi saqlandi!";
}
public function sendWelcomeEmail() {
// Xush kelibsiz xatini yuborish
echo "Xush kelibsiz email yuborildi!";
}
}
Bu kodda User sinfi bir nechta vazifani bajaradi: foydalanuvchi ma'lumotlarini saqlash va email yuborish. Bu SRP ga zid.
Yagona mas'uliyat printsipiga amal qilish
Endi SRP ni qo‘llash uchun sinfni bir nechta sinflarga ajratamiz:
php
Копировать код
class User {
public function __construct(private $name) {}
public function getName() {
return $this->name;
}
}
class UserRepository {
public function save(User $user) {
// Foydalanuvchini bazaga saqlash
echo "Foydalanuvchi saqlandi!";
}
}
class EmailService {
public function sendWelcomeEmail(User $user) {
// Xush kelibsiz xatini yuborish
echo "Xush kelibsiz email yuborildi!";
}
}
Bu misolda, har bir sinf o‘z vazifasiga ega:
Usersinfi foydalanuvchi ma'lumotlarini saqlaydi.UserRepositorysinfi foydalanuvchini bazaga saqlash bilan shug‘ullanadi.EmailServicesinfi email jo‘natish bilan shug‘ullanadi.
Xulosa: Yagona mas'uliyat printsipi kodni boshqarish, yangilash va kengaytirishni osonlashtiradi. Kodni har doim modular shaklda tuzish kerak, shunda u boshqa qismlarga ta’sir qilmasdan o‘zgartirilishi yoki kengaytirilishi mumkin bo‘ladi.