5 نصائح لكتابة وظائف سهم الجودة

وظائف سهم JavaScript تحظى بشعبية كبيرة. وهم يستحقون ذلك ، ويختلفون في الصيغة المقتضبة ، والترابط المعجمية thisوحقيقة أنها مريحة جدًا في استخدامها كردات. تتضمن المادة ، التي ننشر ترجمتها اليوم ، 5 توصيات حول استخدام وظائف الأسهم. الشخص الذي يستفيد من هذه التوصيات لديه فرصة للكشف بشكل كامل عن إمكانات هذه الوظائف.





1. استخدم عرض أسماء وظائف الأسهم


وظائف سهم JavaScript غير معروفة: nameتحتوي خصائصها على سلسلة فارغة - ''.

( number => number + 1 ).name; // => ''

يتم تمييز الوظائف المجهولة كما هو الحال anonymousأثناء التصحيح أو عند تحليل مكدس الاستدعاءات. لسوء الحظ ، anonymousلا تحتوي الكلمة على تلميح حول الرمز المحدد الذي تتعلق به.

فيما يلي إحدى النقاط في رمز التصحيح حيث يتم استدعاء الوظائف المجهولة.


كود تصحيح يحتوي على وظائف مجهولة تحتوي

مجموعة الاستدعاءات الموجودة على الجانب الأيمن من الشكل على مراجع لوظيفتين تم تمييزهما كـanonymous. من هذه المعلومات الواردة في مكدس الاستدعاءات ، لا يمكن للمرء أن يتعلم أي شيء مفيد عن الرمز.

لحسن الحظ ، لدى JavaScript آلية لاشتقاق أسماء الوظائف (ميزة ES2015) ، وهي قادرة ، في ظل ظروف معينة ، على الكشف عن اسم الوظيفة. تتمثل فكرة عرض الاسم في أن جافا سكريبت يمكنها معرفة اسم وظيفة السهم من موقعها النحوي ، أي بناءً على اسم المتغير الذي يخزن الرابط إلى كائن الوظيفة.

دعونا نلقي نظرة على آلية اشتقاق أسماء الوظائف عمليًا:

const increaseNumber = number => number + 1;

increaseNumber.name; // => 'increaseNumber'

نظرًا لأن الإشارة إلى وظيفة السهم مخزنة في متغير increaseNumber، تقرر JavaScript أن الاسم 'increaseNumber'مناسب تمامًا للدالة. ونتيجة لذلك ، تحصل وظيفة السهم أيضًا على مثل هذا الاسم.

يوصى باستخدام آلية اشتقاق اسم الوظيفة لتسمية وظائف الأسهم.

الآن دعونا نلقي نظرة على عملية التصحيح ، حيث يتم استخدام آلية اشتقاق أسماء الدوال.


كود تصحيح يحتوي على وظائف السهم التي تم اعطائها اسماء

بما أن وظائف السهم لها أسماء الآن ، فإن مكدس الاستدعاء يوفر معلومات أكثر فائدة عن الكود الجاري تنفيذه:

  • يشير اسم الوظيفة handleButtonClickإلى استدعاء معالج الأحداث click.
  • increaseCounterيشير الاسم إلى استدعاء الوظيفة التي تزيد العداد.

2. كلما كان ذلك ممكنا ، جاهد لكتابة وظائف مضمنة


دالة "مضمنة" هي وظيفة تتكون من تعبير واحد. في وظائف السهم ، أحب حقيقة أنها ملائمة جدًا للاستخدام لإنشاء وظائف مضمنة قصيرة.

على سبيل المثال ، إليك الشكل "الكامل" لوظيفة السهم:

const array = [1, 2, 3];

array.map((number) => { 
  return number * 2;
});

يمكن بسهولة جعل هذه الميزة أكثر إحكاما. وبالتحديد ، نظرًا لأن الوظيفة تحتوي على تعبير واحد فقط ، يمكنك إزالة الأقواس المتعرجة و return:

const array = [1, 2, 3];

array.map(number => number * 2);

من المستحسن أنه إذا احتوت دالة على تعبير واحد فقط ، اجعلها مضمنة.

3. استخدم بعناية وظائف الأسهم وعوامل المقارنة.


عوامل المقارنة >، <، <=و >=تشبه إلى حد كبير على السهم =>الذي أعلن السهم وظائف (هذه السهام ويسمى أيضا "سهم جريئة").

عند استخدام عوامل المقارنة في دالة مضمنة ، قد لا يكون الرمز الناتج واضحًا جدًا.

قم بتعريف وظيفة السهم التي تستخدم عامل التشغيل <=:

const negativeToZero = number => number <= 0 ? 0 : number;

وجود في سطر واحد من الأحرف =>و <=disorientates القارئ التعليمات البرمجية.

من أجل التمييز بوضوح بين الأسهم وعوامل المقارنة ، يمكن استخدام العديد من الأساليب.

أولاً ، يمكنك وضع التعبير بين قوسين:

const negativeToZero = number => (number <= 0 ? 0 : number);

ثانيًا ، يمكنك إعلان وظيفة السهم عن قصد باستخدام بنية أطول:

const negativeToZero = number => {
  return number <= 0 ? 0 : number;
};

تزيل هذه التحولات حالة عدم اليقين الناجمة عن استخدام كل من رمز السهم وعوامل المقارنة في سطر واحد.

فمن المستحسن أن إذا ظيفة من سطر واحد سهم يحتوي على البيانات >، <، <=و >=، إلى إبرام التعبير المقابلة بين قوسين أو استخدام متعددة شكل إعلانات السهم الوظائف.

4. استخدم الأقواس أو الهياكل متعددة الأسطر عند إنشاء كائنات بسيطة في وظائف الأسهم


سيؤدي استخدام كائن حرفي داخل دالة السهم المضمنة إلى حدوث خطأ في بناء الجملة:

const array = [1, 2, 3];

//  SyntaxError!
array.map(number => { 'number': number });

تعتبر جافا سكريبت الأقواس المتعرجة كتلة من التعليمات البرمجية ، وليست كائنًا حرفيًا.

إذا أرفقت الكائن الحرفي بين قوسين ، فسيتم حل هذه المشكلة:

const array = [1, 2, 3];

// !
array.map(number => ({ 'number': number }));

إذا كان للكائن الحرفي العديد من الخصائص ، فيمكنك هنا حتى استخدام خلاصات الخط. لا تزال وظيفة السهم مدمجة:

const array = [1, 2, 3];

// !
array.map(number => ({
  'number': number
  'propA': 'value A',
  'propB': 'value B'
}));

يُنصح بإدراج حرفية الكائن ، عند استخدامها في الدالات المضمنة ، بين قوسين.

5. كن حذرا للتداخل بعمق.


تختلف وظائف السهم في بناء الجملة المقتضبة. إنه جيد. ولكن بسبب ذلك ، يمكن أن تشكل العديد من وظائف الأسهم المضمنة في بعضها البعض من الصعب قراءة الهياكل.

خذ بعين الاعتبار السيناريو التالي. عند النقر فوق الزر ، يتم تنفيذ طلب إلى الخادم. عند تلقي استجابة خادم تحتوي على مجموعة من عناصر معينة ، يتم عرض أسماء هذه العناصر في وحدة التحكم:

myButton.addEventListener('click', () => {
  fetch('/items.json')
    .then(response => response.json())
    .then(json => {
      json.forEach(item => {
        console.log(item.name);
      });
    });
});

هنا نرى ثلاثة مستويات لوظائف سهم التعشيش. من أجل الخوض في ما يحدث في هذا الرمز ، تحتاج إلى قضاء بعض الوقت.

يمكن استخدام العديد من الطرق لتحسين إمكانية قراءة الوظائف المتداخلة.

النهج الأول هو كتابة مراجع دالة للمتغيرات. يجب أن تصف الأسماء المتغيرة بإيجاز جوهر الوظيفة (ألق نظرة على التوصية رقم 1 بشأن اشتقاق أسماء الوظائف).

const readItemsJson = json => {
  json.forEach(item => console.log(item.name));
};

const handleButtonClick = () => {
  fetch('/items.json')
    .then(response => response.json());
    .then(readItemsJson);
};

myButton.addEventListener('click', handleButtonClick);

خلال إعادة بيع ديون، استخرجنا ظائف السهم المتداخلة وكتب لهم في readItemsJsonو المتغيرات handleButtonClick. انخفض مستوى تداخل الكود من 3 إلى 2. أصبح الآن الكود أكثر قابلية للفهم.

خيار آخر لإعادة هيكلة هذا الرمز هو ترجمة الوظيفة بأكملها إلى تنسيق async/await. هذه طريقة رائعة لحل مشكلة الدوال المتداخلة:

const handleButtonClick = async () => {
  const response = await fetch('/items.json');
  const json = await response.json();
  json.forEach(item => console.log(item.name));
};

myButton.addEventListener('click', handleButtonClick);

من المستحسن تجنب مستويات التعشيش العميقة للغاية لوظائف الأسهم ، واستخراجها في متغيرات كوظائف منفصلة ، أو ، إن أمكن ، استخدام بناء الجملة async/await.

ملخص


وظائف سهم JavaScript مجهولة. من أجل جعل تصحيح أخطاء التعليمات البرمجية أكثر إنتاجية ، يوصى باستخدام المتغيرات التي تخزن مراجع الوظائف. يسمح هذا لجافا سكريبت بعرض أسماء الوظائف.

تكون وظائف السهم المضمنة مفيدة عندما يحتوي نص الوظيفة على تعبير واحد فقط.

المشغلين >، <، <=و >=مثل السهم =>الذي يستخدم عند الإعلان عن مفاتيح وظيفة. عند استخدام هذه العوامل في نص وظيفة السهم القابل للتضمين ، يجب مراعاة تحويل الشفرة.

بناء جملة حرفية الكائن ، مثل { prop: 'value' }، مثل كتلة من التعليمات البرمجية {}. نتيجة لذلك ، عندما يتم وضع كائن حرفي داخل دالة سهم مدمجة ، يجب وضعه بين قوسين:() => ({ prop: 'value' }).

تؤدي المستويات العالية جدًا من تداخل الوظائف إلى إرباك الشخص الذي يقرأ التعليمات البرمجية. يوصى بتقليل مستوى تداخل الوظائف عن طريق استخلاصها وكتابتها في متغيرات. طريقة أخرى لتقليل مستوى تداخل التعليمات البرمجية هي استخدام البناء async/await.

القراء الأعزاء! هل تعرف أي حيل مثيرة للاهتمام لاستخدام وظائف الأسهم؟

Source: https://habr.com/ru/post/undefined/


All Articles