یکی از اشتباهاتی که هنگام شروع به کار کردم ، استفاده بیش از حد از کلمه کلیدی else هنگام نوشتن شرایط است. این موضوعی است که بسیاری از افراد را نیز طبق کد خود انجام می دهند ، بنابراین فکر می کردم باید کمی به موضوع توجه کنم.
سلب مسئولیت؛ نظر من در مورد این موضوع صرفاً شخصی است.
در برخی شرایط ، شما ممکن است نتوانید این نوع رویکرد را بر روی کد خود اعمال کنید. گاهی اوقات ، راه حل استفاده از کلمه کلیدی else است. این پست برای آگاهی دادن به مردم از یک روش جایگزین برای منطق ساختاری است.
گارد شرط ها به گفته ویکی پدیا ، بررسی پیش شرط های یکپارچگی است که برای جلوگیری از خطا در هنگام اجرا استفاده می شود.
ما بررسی پیش شرط های یکپارچگی (در ابتدای کد خود) را انجام می دهیم تا از بروز هرگونه اشکال در جریان اصلی منطق خودداری کنیم.در جریان کامل، ما می خواهیم منطق اصلی برنامه ما پس از همه بررسی های اعتبار سنجی شده باشد.بیایید تصور کنیم که ما وب سایتی را نصب کرده ایم که در آن منطقه حق خرید بیمه داریم که فقط به پرداخت مشتری محدود می شود و فقط بعد از ساعت 12 عصر باز می شود.
<?php if ($user != null) { if (time() >= strtotime('12 pm')) { if ($user->hasAccess(UserType.PREMIUM)) { if ($store->hasItemsInStock()) { // the content a premium user user should be able to see when the store is in stock // after 12pm. } else { return 'We are completely sold out.'; } } else { return 'You do not have premium access to our website.'; } } else { return 'This section is not opened before 12PM'; } } else { return 'You are not signed in.'; }
در یک برنامه واقعی ، ما به احتمال زیاد نوعی استثنا را بر می گردانیم.در حالی که این رویکردی برای عبور از طریق شرطی است ، حتی اگر فقط تعداد کمی از آنها را دنبال کنیم ، کلمات کلیدی دیگر دشوار می شوند.این یک مثال بی اهمیت از منطق شرطی است ، اما در حالتی واقعی ، تصور کنید که سعی در پیمایش در یک طبقه دارید که منطق بسیار پیچیده تری دارد. برنامه نویسی از طریق این استاندارد به نظر من پایدار نیست و باید بهتر عمل کنیم.
با گارد شرط ها، می خواهیم این چارچوب را دنبال کنیم:
<?php if (condition1()) { return ...; } if (condition2()) { return ...; } // Input is valid. doSomething();
با در نظر گرفتن این چارچوب ، می توانیم کد قبلی را مانند زیر بازسازی کنیم:
<?php if ($user == null) { return 'You are not signed in.'; } if (time() < strtotime('12 pm')) { return 'This section is not opened before 12PM'; } if (!$user->hasAccess(UserType.PREMIUM)) { return 'You do not have premium access to our website'; } if (!$store->hasItemsInStock()) { return 'We are completely sold out.'; } // the content a premium user user should be able to see when the store is in stock // after 12pm.
درگارد شرط ها ، ما معمولاً عبارت boolean را به آنچه می خواهیم ثابت كنیم ، معكوس می كنیم. اگر می خواهیم کاربر برای مشاهده این صفحه به سیستم وارد شود ، می خواهیم بررسی کنیم آیا آنها به سیستم وارد نشده اند یا خیر.این رویکرد همان جریان منطق دقیقی را به خود جلب می کند ، اما به نظر من و دیگران نیز ، این رویکرد بسیار بهتر از هنگام مقابله با منطق شرطی است.
هنگام کد نویسی ، همیشه باید این سؤال را در ذهن داشته باشیم: "حفظ 6 ماه از این کار چقدر آسان خواهد بود؟"
ایجاد راه حل برای یک مشکل در زمان فعلی بسیار عالی است. اما در آینده چطور؟ ساختن نرم افزار با ذهن در آینده احمقانه نیست.
استفاده از گارد شرط ها باعث می شود تا تیم خود در آینده برای موفقیت در مواقعی که الزامات جدید به برنامه شما افزوده شود ، موفقیت کسب کند.