"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ठोस: एस - एकल उत्तरदायित्व सिद्धांत (एसआरपी)

ठोस: एस - एकल उत्तरदायित्व सिद्धांत (एसआरपी)

2024-08-20 को प्रकाशित
ब्राउज़ करें:663

SOLID: S - Single Responsibility Principle (SRP)

एसआरपी का परिचय:
एकल उत्तरदायित्व सिद्धांत (एसआरपी) पांच ठोस सिद्धांतों में से एक है, जो स्वच्छ और अधिक टिकाऊ कोड लिखने के लिए दिशानिर्देशों का एक सेट है। एसआरपी का कहना है कि एक वर्ग के पास बदलाव का केवल एक ही कारण होना चाहिए, जिसका अर्थ है कि उसकी केवल एक जिम्मेदारी या कार्य होना चाहिए। इस सिद्धांत का पालन करने से कोड को समझना, बनाए रखना और परीक्षण करना आसान हो जाता है।

एसआरपी के उद्देश्य:

  • सरलीकृत रखरखाव: कक्षाओं में केवल एक ही जिम्मेदारी होने से, बग की पहचान करना और उन्हें ठीक करना आसान हो जाता है।
  • स्पष्ट जिम्मेदारी: प्रत्येक वर्ग का एक स्पष्ट उद्देश्य होता है, जिससे कोड को समझना आसान हो जाता है।
  • बेहतर परीक्षण क्षमता: एकल जिम्मेदारियों वाली कक्षाओं को अलग करना और परीक्षण करना आसान होता है।
  • परिवर्तन में आसानी: किसी विशिष्ट जिम्मेदारी में परिवर्तन सिस्टम के अन्य हिस्सों को प्रभावित नहीं करता है।

बुरा अभ्यास उदाहरण (कक्षाएं):
यहां हमारे पास एक UserService क्लास है जो एक से अधिक काम करती है: उपयोगकर्ताओं को प्रबंधित करती है और सूचनाएं भेजती है।

class UserService {
  createUser(user: User): void {
    // Logic to create user
  }

  deleteUser(userId: string): void {
    // Logic to delete user
  }

  notifyUser(userId: string, message: string): void {
    // Logic to notify user
  }
}

इस दृष्टिकोण में, यूजर सर्विस क्लास की कई जिम्मेदारियां हैं: उपयोगकर्ताओं को प्रबंधित करना और सूचनाएं भेजना। यह एसआरपी का उल्लंघन करता है।

अच्छे अभ्यास उदाहरण (कक्षाएं):
एसआरपी लागू करने के लिए, हम जिम्मेदारियों को अलग-अलग वर्गों में विभाजित कर सकते हैं।

class UserService {
  createUser(user: User): void {
    // Logic to create user
  }

  deleteUser(userId: string): void {
    // Logic to delete user
  }
}

class NotificationService {
  notifyUser(userId: string, message: string): void {
    // Logic to notify user
  }
}

अब, UserService केवल उपयोगकर्ता निर्माण और विलोपन को संभालती है, जबकि अधिसूचना सेवा सूचनाओं को संभालती है। एसआरपी का पालन करते हुए प्रत्येक वर्ग की एक ही जिम्मेदारी होती है।

बुरा अभ्यास उदाहरण (कार्य):
यहां हमारे पास एक फ़ंक्शन है जो एक से अधिक कार्य करता है: एक उपयोगकर्ता बनाता है और एक अधिसूचना भेजता है।

function createUserAndNotify(user: User, message: string): void {
  // Logic to create user
  // Logic to send notification
}

इस दृष्टिकोण में, createUserAndNotify फ़ंक्शन की कई जिम्मेदारियां हैं: एक उपयोगकर्ता बनाना और एक अधिसूचना भेजना। यह एसआरपी का उल्लंघन करता है।

अच्छे अभ्यास उदाहरण (कार्य):
एसआरपी लागू करने के लिए, हम जिम्मेदारियों को अलग-अलग कार्यों में अलग कर सकते हैं।

function createUser(user: User): void {
  // Logic to create user
}

function notifyUser(userId: string, message: string): void {
  // Logic to notify user
}

// Using the separated functions
createUser(newUser);
notifyUser(newUser.id, 'Welcome!');

अब, createUser फ़ंक्शन केवल उपयोगकर्ता निर्माण को संभालता है, जबकि InformUser सूचनाओं को संभालता है। एसआरपी के बाद प्रत्येक फ़ंक्शन की एक ही जिम्मेदारी होती है।

टाइपस्क्रिप्ट के साथ रिएक्ट नेटिव में एप्लिकेशन:
कल्पना कीजिए कि हम एक कार्य प्रबंधन ऐप विकसित कर रहे हैं। हम कार्य प्रबंधन तर्क और अधिसूचना तर्क को अलग-अलग वर्गों में अलग करके एसआरपी लागू कर सकते हैं।

बुरा अभ्यास उदाहरण (कक्षाएं):

class TaskService {
  addTask(task: Task): void {
    // Logic to add task
  }

  removeTask(taskId: string): void {
    // Logic to remove task
  }

  notifyTaskDue(taskId: string): void {
    // Logic to notify that the task is due
  }
}

अच्छे अभ्यास उदाहरण (कक्षाएं):

class TaskService {
  addTask(task: Task): void {
    // Logic to add task
  }

  removeTask(taskId: string): void {
    // Logic to remove task
  }
}

class TaskNotificationService {
  notifyTaskDue(taskId: string): void {
    // Logic to notify that the task is due
  }
}

बुरा अभ्यास उदाहरण (कार्य):

function addTaskAndNotify(task: Task): void {
  // Logic to add task
  // Logic to notify that the task is due
}

अच्छे अभ्यास उदाहरण (कार्य):

function addTask(task: Task): void {
  // Logic to add task
}

function notifyTaskDue(taskId: string): void {
  // Logic to notify that the task is due
}

// Using the separated functions
addTask(newTask);
notifyTaskDue(newTask.id);

जिम्मेदारियों को विभाजित करके, हम एप्लिकेशन को बनाए रखना और विस्तारित करना आसान बनाते हैं।

निष्कर्ष:
एकल उत्तरदायित्व सिद्धांत का पालन करने से कोड को साफ़, व्यवस्थित और बनाए रखने में आसान रखने में मदद मिलती है। टाइपस्क्रिप्ट के साथ रिएक्टिव नेटिव डेवलपमेंट में एसआरपी लागू करने से अधिक मॉड्यूलर और परीक्षण योग्य कोड प्राप्त होता है। इस सिद्धांत के सभी लाभों को प्राप्त करने के लिए अपनी कक्षाओं और कार्यों को एक ही जिम्मेदारी पर केंद्रित रखना हमेशा याद रखें।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/paulocappa/solid-day-1-s-single-responsibility-principle-srp-1f5k?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3