شرح الفرق بين Pure Functions و Impure Functions

شرح الفرق بين Pure Functions و Impure Functions

28 ماي 2022|دقيقتين قراءة

في عالم البرمجة كاينين العديد من المفاهيم اللي خاص المبرمج إكون عارفهم و فاهمهم, حيت كايتعتابرو أساسيين باش تنشئ برامج و تطبيقات إحترافية. في هاد المقال غانهضرو على الفرق بين 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 غا تختالف.

النهاية :

هوا فالحقيقة تقدر تعيش بخير بلا ما تعرف هادشي , لكن ماللي غاتمشي لشي مقابلة عمل غاتلقى العديد من الأسئلة اللي كادور حول هاد المفاهيم و المصطلحات.