في عالم البرمجة كاينين العديد من المفاهيم اللي خاص المبرمج إكون عارفهم و فاهمهم, حيت كايتعتابرو أساسيين باش تنشئ برامج و تطبيقات إحترافية. في هاد المقال غانهضرو على الفرق بين Pure Functions و Impure Functions .
باش نقدرو نفهمو الفرق اللي بينهم , خاصنا نفهمو المعنى ديال Side Effects التأثيرات الجانبية بالنسبة لل Functions.
Functions Side Effects :
التعريف ديال التأثيرات الجانبية بصفة عامة , هوما النتائج الغير متوقعة لشيئ ما . بالنسبة لل Function , نقدرو نقولو ان هاد التأثيرات هي الحصول على نتائج مختلفة في كل مرة كانشغلوها , واخا إكونو ل arguments (المداخيل) نفسهم.
- مثال :
let num = 10; function fn(val) { return num * val; }
في هاد المثال , عندنا function سميناها fn كاتقبل رقم و كاتعطينا في الخارج داك الرقم اللي عطيناها مضروب في متغير سميتو num كاين خارج هاد ل function. بما أن هاد ل Function كاتعتامد على متغير خارجي , الخارج غايكون دائما مختالف إلى تغيرات القيمة ديال num واخا نعطيوها نفس ل argument .
الأن نشرحو الفرق بين Pure Functions و Impure Functions .
Pure Function :
هي ل Function اللي مكايكونوش عندها تأثيرات خارجية , أي اننا غانحصلو دائما على نفس النتيجة إلى عطيناها نفس ل arguments. بتعريف أخر هي ل Function اللي كايتواجدو فيها هاد الشروط :
-
كاترد لينا نفس النتيجة إلى عطيناها نفس ل arguments.
-
مكاتعتامدش على متغيرات أو معلومات خارجية.
-
دائما كاترد لينا شي حاجة.
Impure Function :
هي ل Function اللي كايتواجدو فيها هاد الشروط :
-
كاتعتامد على متغيرات أو معلومات خارجية.
-
ماشي بالضرورة خاصها ترد لينا شي حاجة.
شنو خاصك تستعمل ؟؟
ربما تقول باللي Pure Function أحسن , راك خاطئ لأن كل وحدة و الإستعمالات ديالها , مثلا في Javascript كانستعملو ل Impure Functions باش نتحكمو في DOM و نغيرو فيه , مثلا:
async function sendDataToServer(api){ const data = input.value; if(!data) return null; const res = await fetch(api, { method: 'POST', body: JSON.stringify(data) }) input.value = ""; return res.json(); }
هنا عندنا Function سميتها sendDataToServer اللي كاتقوم بإرسال المعلومات ل SERVER , هاد ل function كاتقبل ل API ديال SERVER و كاتعتامد على داكشي اللي كتب المستخدم في ل input , بمعنى أن النتيجة غاتختالف في كل مرة كانخدموها واخا نعطيوها نفس ل API حيت القيمة ديال ل input غا تختالف.
النهاية :
هوا فالحقيقة تقدر تعيش بخير بلا ما تعرف هادشي , لكن ماللي غاتمشي لشي مقابلة عمل غاتلقى العديد من الأسئلة اللي كادور حول هاد المفاهيم و المصطلحات.