PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کدوم حالت درست تره؟



mehran-b
August 4th, 2017, 12:47
سلام بر همه اساتید و دوستان

من یه کار رو به چند شکل کدشو میگم و اساتید با دلیل بگن کدوم حالت صحیح تر هست.




$var = get_option('option_name');
if(!$var) return;
// Continue the code






$var = get_option('option_name');
if($var) :
// Continue the code
endif;






$var = get_option('option_name');
if(!$var) :
exit();
else :
// Continue the code
endif;


پیشاپیش تشکر بابت نظراتی که خواهید داد.
ولادت آقا موسی الرضا هم به همه بچه های انجمن تبریک میگم.

موفق باشید

parswebdesign
August 4th, 2017, 14:19
سلام
به نظرم گزینه اول مناسب تر باشه.
به طور کلی وقتی بخواهیم یک یا چند شرکت رو چک کنیم در ابتدا شرط هایی که نتیجه نادرست هستند رو چک میکنیم و از ادامه کد خارج میشیم

mehran-b
August 5th, 2017, 22:04
سلام
به نظرم گزینه اول مناسب تر باشه.
به طور کلی وقتی بخواهیم یک یا چند شرکت رو چک کنیم در ابتدا شرط هایی که نتیجه نادرست هستند رو چک میکنیم و از ادامه کد خارج میشیم

تشکر بابت نظری که دادید.


سلام بر همه اساتید و دوستان

من یه کار رو به چند شکل کدشو میگم و اساتید با دلیل بگن کدوم حالت صحیح تر هست.




$var = get_option('option_name');
if(!$var) return;
// Continue the code






$var = get_option('option_name');
if($var) :
// Continue the code
endif;






$var = get_option('option_name');
if(!$var) :
exit();
else :
// Continue the code
endif;


پیشاپیش تشکر بابت نظراتی که خواهید داد.
ولادت آقا موسی الرضا هم به همه بچه های انجمن تبریک میگم.

موفق باشید

سایر اساتید نظری ندارند؟

AtrafNet
August 5th, 2017, 22:27
سلام
من روش دوم رو پیشنهاد میکنم چون به نظرم تا زمانی که دلیل منطقی برای دستی پایان دادن کد نباشه نیاز هم نیست کد رو حالا چه با return یا چه با exit پایان بدید.
اصولاً وقتی بخش Continue the code که کامنت کردید کد هاش تموم و اجرا بشه php خودش کار رو تموم شده می دونه و نیاز به دستی exit کردن کد نیست.
مگر در مواردی که به نظرم بدونید که ممکنه حلقه بی نهایت (Infinite Loop) اتفاق بیفته یا باقی کد های ادامه خروجی صفحه به دلایلی مثل Redirect کردن به صفحه دیگه نیاز نباشه و بدونید تا همین جا که اجرا شده برای کاربر کافیه برای همین باقیش رو با exit نادیده میگرید.

البته return با exit کلاً فرق میکنه exit همونطور که از اسمش معلومه باعث خروج از قطعه کد میشه اما return باعث برگشت یک مقدار خروجی میشه که وقتی خالی استفاده میکنید خروجی خالی پس میده و تابع یا قطعه کد رو تموم میکنه.
دستور کلیدی return رو باید بدونید که کاربرد هایی مثل خروجی گرفتن از توابع (function) می تونه داشته باشه در صورتی که exit خودش یه تابع هست و صرفاً کار اتمام یک قطعه یا کل کد رو انجام میده.

kiavaco
August 5th, 2017, 22:30
گزینه دوم نیز پیشنهادی بندس طی صحبت همکاران دیگه راهنمایی لازم انجام شده

parandsystem
August 6th, 2017, 21:17
یکی از روش هایی که به ساده شدن کد ها خیلی کمک میکنه، استفاده نکردن از else تا جای ممکن هست.
تصور کنید اون قسمت "Continue the code" یک کد طولانی باشه که احتمالاَ داخلش چند تا indent دیگه هم وجود داره(مثل if, for, ...)
استفاده کردن از حالت اول باعث میشه یک indent حذف بشه و قطعاَ تاثیر خوبی روی خوانایی کد میگذاره.

یکی از قواعدی هم که معمولاَ توصیه میشه، این هست که کد رو بیش از یک indent جلو نبرین، مثلاَ حلقه های تو در تو، شرط های تو در تو و ... رو معمولاَ‌ میشه به یک متد جدا تبدیل کرد.

starting
August 7th, 2017, 02:49
بهتره برای اینجور مسائل از isset() یا سوئیچ استفاده کنید
و بهتره شرطتون هم فرض بر درست بودن بگذارید تا فالس بودن اینه بخودی خود else رو میندازه دور
بهرحال حالت دوم بهتر از بقیه موارد هست و و بهتره متغیر قبل از شرط خالی قرار دهید و در شرط با ایزست هم بهش مقدار بدید هم کاندیشن رو ترو کنید

فکر کنید یک فرم هست



$name="";
if(isset($_GET['name'])
{
// Continue the code

}

T.Toosi
August 7th, 2017, 14:50
باسلام، شما باید ابتدا مشخص کنید get_option در صورت ست نبودن چه مقداری برگشت میدهد تا بشود بهترین راه را پیشنهاد داد، فکر میکنم دارید از متد get_option وردپرس استفاده میکنید، این متد یک پارامتر دوم دیگری ورودی میگیرد که در صورت ست نبودن آپشن، پارامتر دوم را برگشت میده که به صورت دیفالت False هست، پس وقتی فقط از اپراتور ! استفاده میکنید در مورد شما شامل False و صفر خواهد شد (در پشت صحنه، نوع داده شما به صورت موقت کانورت هم میشود تا با عملگر های دیگر هم مقایسه شود، پس طبیعی است که زمان بیشتری بگیرد) و زمانی اگر یک آپشن داشته باشید که اسمش 0 باشه به مشکل خواهید خورد. پس طبیعی است که 2 نوع داده پایین ما هر 2 False هستند :


$obj = 0;
if(!$obj) echo 'False';

$obj = "0";
if(!$obj) echo 'False';

بهترین راه استفاده از identity operator است، چون در این حالت داده نیاز به هیچگونه تبدیلی ندارد و در نتیجه سرعت compare بیشتر خواهد شد.



$var = get_option('option_name');
if($var !== false) {
}

- - - Updated - - -

var1==var2


http://s6.uplod.ir/i/00892/cavtumk0o85d.png

var1===var2


http://s6.uplod.ir/i/00892/p5798qxdw1tp.png