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