أبسط إذا كانت العبارات تعني دائمًا كود JavaScript أنظف.

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

ولكن هنا تكمن المشكلة - عند الكتابة المعقدة إذا كان غير ذلك السلاسل ، يمكن أن تصبح الأشياء فوضوية بسرعة ، ويمكن أن ينتهي بك الأمر بسهولة برمز يصعب قراءته وفهمه.

دعنا نتعلم كيفية إعادة البناء الطويلة والمعقدة if... elseif... else سلاسل شرطية في إصدار أكثر إيجازًا وأنظف وأسهل في الفهم.

معقدة إذا... سلاسل أخرى

عند كتابة عبارات معقدة if... else في JavaScript ، من الضروري أن تكتب رمز نظيف وموجز ومفهوم. على سبيل المثال ، ألق نظرة على ملف إذا كان غير ذلك سلسلة شرطية داخل الوظيفة أدناه:

وظيفةيمكن شرب(شخص) {
لو(شخص؟ .age! = باطل) {
لو(شخص.عمر < 18) {
وحدة التحكم.سجل("لا يزال صغيرًا جدًا")
} آخرلو(عمر الشخص < 21) {
وحدة التحكم.سجل("ليس في الولايات المتحدة")
} آخر {
وحدة التحكم.سجل("مسموح للشرب")
}
} آخر {
وحدة التحكم.سجل("أنت لست بشخص")
}
}

مقدار ثابت شخص = {
العمر: 22
}

canDrink (شخص)

instagram viewer

المنطق هنا بسيط. الأول لو البيان يضمن أن شخص الكائن له عمر ممتلكات (وإلا فهو ليس شخصًا). داخل ذلك لو حظر ، لقد أضفت ملف إذا... وإلا... إذا سلسلة تقول في الأساس:

إذا كان الشخص أصغر من 18 عامًا ، فهو أصغر من أن يشرب. إذا كان عمرهم أقل من 21 عامًا ، فسيظلون دون السن القانوني للشرب في الولايات المتحدة. خلاف ذلك ، يمكنهم الحصول على مشروب بشكل قانوني.

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

بنود الحراسة

في أي وقت يكون لديك ملف لو العبارة التي تغلف كل التعليمات البرمجية الخاصة بك ، يمكنك استخدام ملف شرط الحراسة لإزالة كل التعشيش:

وظيفةيمكن شرب أفضل() {
لو(شخص؟ .age == باطل) يعودوحدة التحكم.سجل("أنت لست بشخص")

لو(شخص.عمر < 18) {
وحدة التحكم.سجل("لا يزال صغيرًا جدًا")
} آخرلو(عمر الشخص < 21) {
وحدة التحكم.سجل("ليس في الولايات المتحدة")
} آخر {
وحدة التحكم.سجل("مسموح للشرب")
}
}

في بداية الوظيفة ، قمت بتعريف بند حارس ينص على أنه إذا لم يتم استيفاء هذا الشرط المحدد ، فأنت تريد الخروج من canDrinkBetter () تعمل على الفور (وتسجيل "أنت لست شخصًا" على وحدة التحكم).

ولكن إذا تم استيفاء الشرط ، فأنت تقوم بتقييم إذا كان غير ذلك سلسلة لمعرفة أي كتلة قابلة للتطبيق. يمنحك تشغيل الكود نفس نتيجة المثال الأول ، ولكن هذا الرمز أسهل في القراءة.

لا تستخدم عودة واحدة

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

لكن هذه طريقة رهيبة لكتابة التعليمات البرمجية لأنها تجبرك على نفس مواقف التعشيش المجنونة التي رأيناها في نموذج الكود الأول.

مع ذلك ، يمكنك استخدام ملفات متعددة يعود عبارات لتبسيط الكود الخاص بك (والتخلص من التداخل):

وظيفةيمكن شرب أفضل() {
لو(شخص؟ .age == باطل) يعودوحدة التحكم.سجل("أنت لست بشخص")

لو(شخص.عمر < 18) {
وحدة التحكم.سجل("لا يزال صغيرًا جدًا")
يعود
}

لو(شخص.عمر < 21) {
وحدة التحكم.سجل("ليس في الولايات المتحدة")
يعود
}

وحدة التحكم.سجل("مسموح للشرب")
}

يعمل هذا الرمز بنفس الطريقة التي يعمل بها المثالان السابقان ، وهو أيضًا أنظف قليلاً.

وظائف الاستخراج للكود الأنظف

كانت آخر كتلة رمز لدينا أنظف من أول مجموعتين ، لكنها ما زالت ليست جيدة كما ينبغي.

بدلا من الحصول على فترة طويلة إذا كان غير ذلك سلسلة داخل وظيفة واحدة ، يمكنك إنشاء وظيفة منفصلة canDrinkResult () يقوم بالتحقق من أجلك وإرجاع النتيجة:

وظيفةcanDrink النتيجة(عمر) {
لو(العمر < 18) يعود"لا يزال صغيرًا جدًا"
لو(العمر < 21) يعود"ليس في الولايات المتحدة"
يعود"مسموح للشرب"
}

ثم داخل الوظيفة الرئيسية ، كل ما عليك فعله هو تطبيق شرط الحارس أولاً قبل استدعاء canDrinkResult () وظيفة (مع العمر كمعامل لها) للحصول على النتيجة:

وظيفةيمكن شرب أفضل() { 
لو(شخص؟ .age == باطل) يعودوحدة التحكم.سجل("أنت لست بشخص")

يترك النتيجة = canDrinkResult (person.age)
وحدة التحكم.log (نتيجة)
}

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

ابق بعيدًا عن العبارات الشرطية

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

حاول الاحتفاظ بملف آخر بيان بعيدًا عن الشروط الخاصة بك قدر الإمكان باستخدام كل من جمل الحماية وتقنية استخراج الوظيفة.

إذا كنت لا تزال جديدًا على استخدام JavaScript إذا كان غير ذلك بيان ، ابدأ بالأساسيات.