أدوات جافا سكريبت في العمل
اكتشف بعض أدوات استرجاع JavaScript لرفع مستوى لعبتك البرمجية. اعرف المزيد عن ESLint وPrettier وHussky!
اقرأ مقالنا لاكتشاف قوة البرمجة الوظيفية في JavaScript. تصنف البرمجة الوظيفية كنموذج تعريفي حيث يتم فصل وصف البرنامج عن العمليات الحسابية.
"بعبارات بسيطة، البرمجة الوظيفية هي تطوير البرمجيات أسلوب يركز بشكل كبير على استخدام الوظائف"
مقتطفات من الكتاب: لويس أتينسيو "البرمجة الوظيفية في JavaScript. كيفية تحسين JavaScript البرامج باستخدام التقنيات الوظيفية"
البرمجة الوظيفية مصنفة على أنها توضيحية النموذج حيث يتم فصل وصف البرنامج عن العمليات الحسابية. ينصب التركيز هنا على استخدام التعبيرات لوصف منطق البرنامج. هذا هو عكس حتمية البرمجة، حيث الكود يتم تنفيذه خطوة بخطوة ويخبر الكمبيوتر بالتفصيل كيفية إنجاز المهمة.
افترض أن لدينا حالة يكون لدينا فيها شبكة مصفوفة من الأعداد الصحيحة ونحتاج إلى رفع كل منها إلى القوة الثانية ثم تحديد القيم غير الزوجية فقط.
const numer = [1، 2، 3، 3، 4، 5، 6، 6، 7، 8، 9];
تشكل النتائج = []
بالنسبة إلى (دع i = 0؛ i < numbers.length; i++) {
const secondPower = Math.pow(numbers[i]، 2)
إذا كانت (secondPower & 1) { // أو % 2 ولكن العمليات على البتات أسرع
النتائج.push(secondPower);
}
}
console.log(results) // [1, 9, 25, 49, 81]
أما بالنسبة إلى حتمية الحل، يظهر التركيز على تفاصيل التنفيذ بوضوح. في الحلقة، يمكنك رؤية فهرس المصفوفة بناءً على الحاجة إلى التحكم في عدد العناصر. نظرًا للعدد الكبير من التفاصيل في الشيفرة، من الصعب التركيز على ما تقوم به. دعونا نركز الآن على توضيحية الحل.
const risesToSecondPower = (num) => Math.pow(num, 2)
const isOdd = (num) = (num) => num & 1;
الأعداد = [1، 2، 3، 3، 4، 5، 6، 7، 8، 9]
تشكل النتائج = الأرقام
.خريطة(يرتفع إلى القوة الثانية)
.فلتر(isOdd);
console.log(results) // [1, 9, 25, 49, 81]
في هذا الحل، تم فصل التنفيذ عن الاستدعاء من خلال نقل المنطق إلى دوال منفصلة. بفضل هذا الحل، يمكننا التركيز فقط على أسماء الدوال التي تصف ما يحدث فيها. بالإضافة إلى ذلك، تم رفع مستوى التجريد ويمكن الآن إعادة استخدام المنطق. والآن، لنركز على الاستدعاء. لا يمكنك أن ترى أي تفاصيل فيه، فقط وصف يخبرك بما تفعله هذه الشيفرة، خطوة بخطوة:
خريطة(يرتفع إلى الطاقة الثانية)
- أخذ كل عنصر من عناصر المصفوفة ورفعه للقوة الثانية,مرشح(isOdd)
- تصفية وتحديد العناصر الفردية.البرمجة الوظيفية العديد من الفوائد. عندما يتعلق الأمر بـ JavaScriptفإن استخدام الدوال أمر طبيعي لأنها لغة وظيفية. حتى الفصول في هذه اللغة هي "سكر نحوي" وهي مكونة في الأسفل من الدوال.
عندما يتعلق الأمر بقابلية القراءة، في النهج الحتمي، عادةً ما تصبح الشيفرة قائمة بأسماء الدوال التي يمكن قراءتها بالتسلسل دون الخوض في منطقها. ونتيجة لذلك، لا نركز على تفاصيل التنفيذ.
ميزة أخرى هي الالتزام باصطلاح الكائنات الثابتة. وبفضل هذا النهج، تصبح الشيفرة أكثر أمانًا لأن المراجع في JavaScript قوية للغاية ومن السهل تعديل الكائن غير المرغوب فيه.
في البرمجة الوظيفية، يتم تقسيم الشيفرة البرمجية إلى دوال صغيرة يمكن اعتبارها بسهولة شيفرة مجردة قابلة لإعادة الاستخدام.
إحدى الاعتبارات المهمة في البرمجة الوظيفية هي الدوال البحتة. لإنشاء مثل هذه الدالة، عليك أن تتذكر بعض القواعد:
// دالة Inpure
دع العداد = 5
...
عداد مضاعف = (مضاعف) => {
العداد = العداد * المضاعف
}
مضاعف العدّاد(2) //- -> ؟ النتيجة تعتمد على القيمة الأولية
// دالة نقية
المضاعفات = (المضاعف) => (القيمة) => القيمة * المضاعف
مضاعف مضاعف (2) = (مضاعف) مضاعف (2)
كونت عداد = مضروب في اثنين(5) // -> 10
الدالة الأولى لا يمكن التنبؤ بها لأنها تعتمد على معلمة خارجية يمكن أن تتغير. الدالة الثانية شفافة، فهي تعتمد فقط على معلمات المدخلات، ولا تعدلها، ولا تستخدم متغيرات خارج النطاق. الدالة الثالثة شفافة لأنها تعتمد على معلمات ولا تعدّلها ولا تستخدم متغيرات خارج النطاق، وتُرجع قيمة جديدة.