Ehsan Rafiee
Ehsan Rafiee
خواندن ۲ دقیقه·۴ سال پیش

تبدیل کد کثیف به یک کد تمییز و پاکیزه!

یکی از موارد رایج که یک کد تمییز را به سادگی یک کد کثیف تبدیل می‌کند استفاده زیاد و نادرست از دستورات if  است،که خوانایی و اشکال زدایی و نگهداری و  توسعه کد را سخت و پیچده می‌کند.

استفاده از if یکی از آموزش های اولیه در هر زبان برنامه نویسی است که افراد آنرا یاد می‌گیرند و باید در میزان استفاده از دستورات شرطی دقت لازم را داشته باشند.

در این مطلب می‌خوام بررسی کنم که چگونه با کمترین استفاده از if کد تمییز و خوانایی داشته باشیم.

در مثال زیر که بر پایه فریمورک لاراول نوشته شده است قصد داریم چک کنیم اگر کاربر لاگین بود داده هایی را ریسپانس دهیم و اگر نبود که داده های متفاوتی برای کاربر ارسال کنیم در کد زیر خیلی قرار نیست بر logic کدها فوکس کنیم در این محتوا تمرکز ام بر تمییز بودن کدها است .

کد کثیف:

$check_user_login = Auth::check(); if($check_user_login == false){ $login = 0; }else{ $login= 1; } if($check_user_login == true){ $check_favorite = UserFav::where('user_id',auth()->id())->get(); } if($check_favorite != &quot &quot){ if(count($check_favorite) > 0) { $fav = 0; }else{ $fav = 1; }

موارد اشتباه در کد بالا

البته بخش از مشکل کد بالا از logic و یا همان منطق کد ها است و این موضوع میتواند باعث کثیف شدن کدها بشود.

  • هیچ نیازی نیست دوبار از if استفاده کنیم زمانی که else آن همان معنا را می دهد یعنی اگر check_user_login == false نباشد حتما true است.
  • با استفاده از کلاس UserFav ابتدا تمامی لیست مورد علاقه کاربر دریافت می شود و سپس در if بعدی چک میکند که یک string خالی نباشد چون زمانی که دستور get موردی را از دیتابیس بگیرد نتیجه آن یک string خالی نیست سپس یک if تعریف شده است که count($check_favorite) > 0 می گوید تعداد آن نتایج برگشتی بزرگتر از 0 باشد و سپس داخل if نوشته شده $fav = 10; باشد و حالت else آن یعنی زمانی که count صفر نباشید عدد 11 را برای متغییر فیکس شده است، هیچ نیازی نیست اول داده ها را از دیتابیس بگیریم سپس Count آنرا بررسی میکنیم میتوانیم با تابع count فقط تعداد آنرا از دیتابیس دریافت کنیم.


حالا کد تمییز آن را بنویسیم

if(Auth::check() == false){ $login = 0; $fav = 0; }else{ $login= 1; $check_favorite = UserFav::where('user_id',auth()->id())->count(); ($check_favorite > 0 ) ? $fav = 1 : $fav = 0 ; }

چقدر کد کوتاه تر شد و میزان خوانایی کد بالا رفت :)

لاراولبرنامه نویسی
PHP/Laravel Developer
شاید از این پست‌ها خوشتان بیاید