مقدمة إلى SRP:
يعد مبدأ المسؤولية الفردية (SRP) أحد مبادئ SOLID الخمسة، وهو عبارة عن مجموعة من الإرشادات لكتابة تعليمات برمجية أكثر وضوحًا واستدامة. ينص 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 } }
في هذا النهج، تتمتع فئة UserService بمسؤوليات متعددة: إدارة المستخدمين وإرسال الإشعارات. وهذا ينتهك برنامج SRP.
مثال على الممارسات الجيدة (الفصول):
لتطبيق SRP، يمكننا فصل المسؤوليات إلى فئات مختلفة.
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 مع إنشاء المستخدم وحذفه فقط، بينما يتعامل NotificationService مع الإشعارات. كل فئة لديها مسؤولية واحدة، بعد SRP.
مثال على الممارسات السيئة (الوظائف):
لدينا هنا وظيفة تقوم بأكثر من شيء: إنشاء مستخدم وإرسال إشعار.
function createUserAndNotify(user: User, message: string): void { // Logic to create user // Logic to send notification }
في هذا الأسلوب، تتمتع وظيفة createUserAndNotify بمسؤوليات متعددة: إنشاء مستخدم وإرسال إشعار. وهذا ينتهك برنامج SRP.
مثال على الممارسات الجيدة (الوظائف):
لتطبيق SRP، يمكننا فصل المسؤوليات إلى وظائف متميزة.
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 مع إنشاء المستخدم فقط، بينما تعالج وظيفة notifyUser الإشعارات. كل وظيفة لديها مسؤولية واحدة، بعد SRP.
التطبيق في React Native باستخدام TypeScript:
تخيل أننا نعمل على تطوير تطبيق لإدارة المهام. يمكننا تطبيق SRP عن طريق فصل منطق إدارة المهام ومنطق الإشعارات إلى فئات مختلفة.
مثال على الممارسات السيئة (الفصول):
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);
من خلال تقسيم المسؤوليات، نجعل صيانة التطبيق وتوسيعه أسهل.
خاتمة:
يساعد اتباع مبدأ المسؤولية الفردية في الحفاظ على نظافة التعليمات البرمجية وتنظيمها وسهولة صيانتها. يؤدي تطبيق SRP في تطوير React Native باستخدام TypeScript إلى المزيد من التعليمات البرمجية المعيارية والقابلة للاختبار. تذكر دائمًا أن تركز فصولك ووظائفك على مسؤولية واحدة لجني جميع فوائد هذا المبدأ.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3