دسته بندی :
تاریخ انتشار : ۰۸ شهریور ۱۳۹۵
گردآوری و تالیف : حسام موسوی

کارمو با طراحی گرافیکی شروع کردم و حدود 2 سال طراحی گرافیکی میکردم بعد به طراحی وب علاقه پیدا کردم و همراه طراحی وب عاشق کدنویسی شدم به PHP | sass | css | Jquery | javaScript تسلط کامل دارم . در بین فریم ورک های PHP اول با CodeIgniter کار کردم اما به laravel علاقه مند شدم و دارم بطور حرفه ای دنبالش میکنم . امید من اینکه بتونم کاربرهای ایرانی رو به دنیای بیرون متصل کنم تا بتونن از فناوری های تازه آگاهی داشته باشن

در این پست قصد دارم یک نکته جاوا اسکریپتی برای بهبود تو در تو نویسی شروط در جاوا اسکریپت را به شما بگم تا در کد نویسی های بعدی از شروط در برنامه های خودتون بهتر استفاده کنید ، البته این پست یکی از سری پست های نکات جاوا اسکریپتی است که در پست های آینده سعی میکنم نکات بیشتری برای بهبود کد نویسی در جاوا اسکریپت به شما ارائه بدم . 

به نظر شما چطور میتوانیم تو در تو نویسی شروط if در جاوا اسکریپت را بهبود ببخشیم ؟ به کد زیر دقت کنید . 

if (color) {
  if (color === 'black') {
    printBlackBackground();
  } else if (color === 'red') {
    printRedBackground();
  } else if (color === 'blue') {
    printBlueBackground();
  } else if (color === 'green') {
    printGreenBackground();
  } else {
    printYellowBackground();
  }
}

یکی از راه های بهبود تو در تو نویسی شروط if در جاوا اسکریپت استفاده از switch می باشد . هرچند که switch کد نویسی کوتاه تری دارد اما ما اون رو به شما پیشنهاد نمی کنیم چون اشکال زدایی در switch کمی دشوار است . 

switch(color) {
  case 'black':
    printBlackBackground();
    break;
  case 'red':
    printRedBackground();
    break;
  case 'blue':
    printBlueBackground();
    break;
  case 'green':
    printGreenBackground();
    break;
  default:
    printYellowBackground();
}

 اما اگر ما برای شروط خودمون چند شرط برای چک کردن داریم و اگر هم میخوایم کدهای کوتاه تری هم داشته باشیم خوب باید بجای if از switch استفاده کنیم . برای هر case هم باید مقداری true یا false بر گردونیم پس کد ما بصورت زیر میشه . 

switch(true) {
  case (typeof color === 'string' && color === 'black'):
    printBlackBackground();
    break;
  case (typeof color === 'string' && color === 'red'):
    printRedBackground();
    break;
  case (typeof color === 'string' && color === 'blue'):
    printBlueBackground();
    break;
  case (typeof color === 'string' && color === 'green'):
    printGreenBackground();
    break;
  case (typeof color === 'string' && color === 'yellow'):
    printYellowBackground();
    break;
}

 حالا اگر بخوایم داخل case ها را refactor کنیم ، ما می تونیم از تابع برای چک کردن و برگشت true یا false استفاده کنیم . در این مثال برای چک کردن رنگ میتونیم از تابع زیر استفاده کنیم . 

function printBackground(color) {
  if (!color || typeof color !== 'string') {
    return; // Invalid color, return immediately
  }
}

اما اگر refactor کردن یکی از گزینه های ما نیست ، ما نباید به این صورت در switch شروط خودمون رو قرار بدیم در این مثال بهترین کار استفاده کردن از شی ها برای اعمال این تو در تو نویسی است به کد زیر دقت کنید . 

var colorObj = {
  'black': printBlackBackground,
  'red': printRedBackground,
  'blue': printBlueBackground,
  'green': printGreenBackground,
  'yellow': printYellowBackground
};

if (color in colorObj) {
  colorObj[color]();
}

امیدوارم با استفاده از این نکات فهمیده باشید که چطور میشه تو در تو نویسی در شروط جاوا اسکریپت رو بهبود ببخشید.

دیدگاه های مخاطبین

ثبت دیدگاه شما
  • وحید منتظر

    مطلب آموزنده و خیلی خوبی بود.
    من همین یه قسمت از کدی که در Laravel نوشته بودم رو با این روش Refactor کردم.

پیشنهاد میکنیم این مطالب رو هم مطالعه کنید :