Ali Ahmed55 نشر 21 أبريل أرسل تقرير نشر 21 أبريل السلام عليكم هو من دمن ان اكتب داله نظيف هي دي (الدوال يجب أن لا تحتوي على تأثيرات جانبية Side Effects) بس انا مش فاهم معني اي ؟ 4 اقتباس
0 Mustafa Suleiman نشر 21 أبريل أرسل تقرير نشر 21 أبريل المقصود أنّ الدالة تُغيّر أو تتفاعل مع أشياء خارج نطاقها المحلي، أي عند القيام بما يلي: تعديل متغير عام تغيير قيمة مُدخلات الدالة نفسها الاتصال بقاعدة بيانات أو ملف. طباعة شيء في الكونسول. أي تفاعل خارج الكود بمعنى الإتصال بـ API خارجي مثلاً وذلك ليس أمر سيء، فأحيانًا كثيرة نريد التأثير الجانبي لأنّ المنطق الذي نكتبه يفرضه فالإتصال بقاعدة بيانات أو الكتابة في ملف أمر خارج عند إرادتنا. counter = 0 def increment(): global counter counter += 1 return counter لاحظ الدالة increment() تغيّر المتغير العام counter، مما يجعلها غير قابلة للتنبؤ لو استُخدمت في أماكن أخرى في حال وجود متغير باسم counter. الممارسات الجيدة تقتضي عزل الأجزاء التي تحتوي على Side Effects بوضعها في دوال منفصلة وتقليل الاعتماد على الحالة الخارجية قدر الإمكان، وبالتطبيق على الدالة السابقة سنكتبها كالتالي بتمرير معامل لها فقط ولا تقوم بتعديل أي شيء خارجها: def increment(current_counter): return current_counter + 1 counter = 0 counter = increment(counter) print(counter) counter = increment(counter) print(counter) أو من خلال دالة مغلقة Closure: def create_counter(): counter = 0 def increment(): nonlocal counter counter += 1 return counter return increment increment = create_counter() print(increment()) print(increment()) أما الدالة النقية Pure فهي تعتمد على مدخلاتها فقط ولا تغير أي شيء خارجي: def add_numbers(a, b): return a + b result = add_numbers(5, 3) print(result) 1 اقتباس
0 محمد_عاطف نشر 21 أبريل أرسل تقرير نشر 21 أبريل وعليكم السلام ورحمة الله وبركاته. لنشرح أولا معني الدالة النقية (Pure Function) وهي الدالة التي تأخذ معاملات وتقوم بإعادة ناتج فقط ولا تقوم بالتأثير على أي كود أو متغيرات خارجها ولا تتأثر بأى شئ خارجها. إذا ما هو التأثير الجانبي (Side Effect) هو أى شئ يحدث خارج نطاق الدالة مثل : تغيير قيمة متغير خارج الدالة. طباعة شئ ما . كتابة أو قراءة ملف. إرسال بيانات للخادم . تغيير حالة (State) الكود لديك. لنأخذ مثال على دالة نقية : def add(x, y): return x + y هنا الدالة السابقة نقية حيث تأخد x و y وتعيد مجموعهم. ولا تقوم بتغير أى شئ في الكود وكل مرة تقوم بإستدعاءها بنفس المدخلات ستعيد لك نفس الناتج. مثال على دالة ذات تأثير جانبي (Side Effect) : result = 0 def add_and_save(x, y): global result result = x + y هي دالة غير نقية (non-pure ) حيث لها تأثير جانبي وهو تغير قيمة متغير خارجي اسمه result. 1 اقتباس
0 بلال زيادة نشر 21 أبريل أرسل تقرير نشر 21 أبريل مفهوم التأثيرات الجانبية (Side Effects) في البرمجة يعني أي تغيير يحدث خارج نطاق الدالة نفسها أثناء تنفيذها، مثل تعديل متغير عالمي، تغيير حالة كائن، كتابة/قراءة من ملف، أو حتى طباعة شيء على الشاشة، دالة نظيفة (Pure Function) هي دالة: function add(a, b) { return a + b; } والدالة الغير نظيفة let total = 0; function addToTotal(a) { total += a; // تعديل متغير عالمي (تأثير جانبي) return total; } الدوال النظيفة مهمة من حيث سهولة الاختبار بما إنها دايمًا تعطي نفس النتيجة لنفس المدخلات، سهل تختبرها و تعمل على تقليل الأخطاء: لأنها ما بتغير حالة البرنامج بشكل غير متوقع. 1 اقتباس
0 Ali Ahmed55 نشر 21 أبريل الكاتب أرسل تقرير نشر 21 أبريل الف شكراا جدا جدا لحضرتكم جزاكم الله كل خير اقتباس
السؤال
Ali Ahmed55
السلام عليكم
هو من دمن ان اكتب داله نظيف هي دي (الدوال يجب أن لا تحتوي على تأثيرات جانبية Side Effects) بس انا مش فاهم معني اي ؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.