Тема: Яка умова краще?
це не стосується суто php, але власне, яка умова краще?
if(null===$item)
//чи
if($item===null)
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → PHP → Яка умова краще?
Для відправлення відповіді ви повинні увійти або зареєструватися
це не стосується суто php, але власне, яка умова краще?
if(null===$item)
//чи
if($item===null)
УКРАЇНСЬКА!
а, Умова, а я думав, що мова
p.s. ви серйозно?
УКРАЇНСЬКА!
а, Умова, а я думав, що мова
p.s. ви серйозно?
так серйозно, тут є одна заковика, знаєте яка?
FakiNyan написав:УКРАЇНСЬКА!
а, Умова, а я думав, що мова
p.s. ви серйозно?так серйозно, тут є одна заковика, знаєте яка?
нє
В PHP теж можна присвоювати в умові? Страждайте
пан @quez правий
я більше схиляюсь до першого. хоча я в прикладі я написав === замість ==, але це суті практично не міняє.
отже наприклад ВИ пишете код, і машинально написали ось, що
if($item=null){
//...
}
і все, цей код валідний при чому завжди рівне true
на відміну від попередньго коду тут вивалиться еррор, адже константи змінювати заборонено
if(null=$item){
//...
}
такий прийом нічого не міняє логіці роботи, зато убереже від всяких непотрібних багівпомилок
такий прийом нічого не міняє логіці роботи, зато убереже від всяких непотрібних багівпомилок
Ну як вам сказати, якщо одне око дивиться в один бік, а інший - в інший, то начебто в обох випадках ви бачите, але як би воно... той го... не те
Можна використовувати ще is_null()
Ну як вам сказати, якщо одне око дивиться в один бік, а інший - в інший, то начебто в обох випадках ви бачите, але як би воно... той го... не те
щось я незрозумів, на що це вплине?
Це впливає на нелогічність думки, це теж саме що міряти не "від -> до", а "до -> від".
пан @quez правий
я більше схиляюсь до першого. хоча я в прикладі я написав === замість ==, але це суті практично не міняє.
отже наприклад ВИ пишете код, і машинально написали ось, щоif($item=null){ //... }
і все, цей код валідний при чому завжди рівне true
на відміну від попередньго коду тут вивалиться еррор, адже константи змінювати заборонено
if(null=$item){ //... }
такий прийом нічого не міняє логіці роботи, зато убереже від всяких непотрібних багівпомилок
а чому не можна порівнювати по-інакшому?
зазвичай порівнюють
if($it===null){
echo $z;
}else{
echo $f;
}
чому б не порівнювати
if($it!==null){
echo $f;
}else{
echo $z;
}
?
------
доречі щось я таке в чаті сішників чув, що в с/с++ порівняння z!=0 працює швидше ніж порівняння z==0 (правда від компілятора ще може залежати - оптимізовує чи ні)
Повірте, якщо можеш Сам переплутати = з ==, то так самого легко з === , і так порівнють в більшості тоді, коли треба порівняти включно з типом даних.
Якщо просто пустий рядок, без типу null ($str = null)
var_dump('' == null); //true
var_dump('' === null); //false
доречі щось я таке в чаті сішників чув, що в с/с++ порівняння z!=0 працює швидше ніж порівняння z==0 (правда від компілятора ще може залежати - оптимізовує чи ні)
Суттєво залежить від компілятора, асемблера, налаштувань оптимізації і т.п. Зрештою, можна писати і просто
if(z)...
Не буду казати що такі помилки з 1 = дуже рідкі, і важко досвідченому програмісту її зробити, а IDE такі ситуації теж викриває, але у 80% такі перевірки виглядають так:
if (var == null)
throw new NullPointerException();
Тому навіть якщо мова підтримує присвоєння у if, то там буде true і вивалиться виняток.
Я особисто за 2 другий варіант, тому що він є менш логічно-навантажений (Якщо моя змінна пуста, то... а не Якщо пустота є моєю змінною, то...), що при великій кількості коду є плюсом. Звичайно, це не rocket science, але коли тримаєш у голові 400 ліній коду і тут такий іф, який трохи відходить від звичайної практики, може змусити вас трохи приділити "процесорного часу" на таку дрібницю.
До того цей код абсолютно ідентичний і має абсолютно однакові наслідки, які б значення змінної не були. Це не джавовий equals, де є різниця, писати:
if ("text".equals(myVariable))
//чи
if (myVariable.equals("text"))
Моя історія. Я проголосував за 2гий варіант але вони обоє хороші і все залежить від інструментів.
Є безліч нюансів. Якщо ви пишете з нуля або підтримуєте код. Якщо ви кодити 1н або вас 5ро. Якщо у вас є кльова IDE або ви юзаєте sublime і тд. Тобто кожен код хороший по своєму.
Варіант 1н хороший тоді коли у вас наступні умови:
if(null===$item)
1. Уже були випадки що ви писати if($item=null)
2. Якщо у вас в команді багато молодих і ви їх б`єте по пальцях кожен раз коли вони стараються написати if($item==null)
3. Якщо ви пишете проект з нуля - тоді це хороша практика.
4. Якщо вас не напрягає читати таку конструкцію
5. Якщо ви деколи робите присвоєння в if конструкції
Варіант 2 краще використовувати ось коли:
if($item===null)
1. У вас є ide яка підсказує червоним кольором - про присвоєння у констуркції if
2. Вам легше читати такий код ні тей що представлений у варіанті 1.
3. У вас немає присвоєнь у конструкції if і ви без проблем можете написати if($item==null)
4. У вас є CI або будь які інші тести коду які вам дадуть червоний екран якщо ви напишите if($item=null) щось у цьому роді
До речі подумав що було б кльово мати такий валідатор.
Не буду казати що такі помилки з 1 = дуже рідкі, і важко досвідченому програмісту її зробити, а IDE такі ситуації теж викриває, але у 80% такі перевірки виглядають так:
if (var == null) throw new NullPointerException();
Тому навіть якщо мова підтримує присвоєння у if, то там буде true і вивалиться виняток.
Але ж там буде false, що в PHP, що в с++.
Але ж там буде false, що в PHP, що в с++.
+1 Саме так там буде false і умова ніколи не буде спрацьовувати)
@221VOLT
чому б не порівнювати
if($it!==null){
echo $f;
}else{
echo $z;
}
бувають ситуації що вам треба наприклад створити обєкт якщо його немає.
if($user === null ) {
$user = new User();
$user->save();
}
echo $user->getId();
Ви звісно можете написати
if($user !== null ) {
} else{
$user = new User();
$user->save();
}
echo $user->getId();
Але це буде дуже погано. І ще одне. для Особисто мені краще перевіряти умову на true аніж на false.
Для відправлення відповіді ви повинні увійти або зареєструватися