Помогите исправить собственное быдлокодерство

Фанат

oncle terrible
Команда форума
функция isManager() должна выдавать true только на менеджера.
Фантастика! кто бы мог подумать? А я-то не догадался. Спасибо за разъяснения!
Я к сожалению не телепат
Ну, у тебя есть штатный утиратель соплей. Он объяснит.

ЗЫ. Всё-таки, ты не оставляешь своего недовольного тона, "Вот ведь с какими дураками общаться приходится - ни смысл функции понять не могут, ни даже не догоняют, что я не телепат".
Выпинывать я тебя не буду, но и общаться с попрошайкой, который позволяет себе капризный тон - извини, никакого желания.
 

gray

Новичок
Ясно.
Вопрос про моё быдлокодерство актуален.
Если есть культурные люди, которые могут объяснить начинающему почему этот кусок кода
PHP:
$userType=(mysql_num_rows($result)=='1')?true:false;
не правильный с точки зрения программирования, объясните пожалуйста или сошлитесь на доку в которой я смогу сам это почерпнуть. Спасибо.
 

craz

Нестандартное звание
Ясно.
Вопрос про моё быдлокодерство актуален.
Если есть культурные люди, которые могут объяснить начинающему почему этот кусок кода
PHP:
$userType=(mysql_num_rows($result)=='1')?true:false;
не правильный с точки зрения программирования, объясните пожалуйста или сошлитесь на доку в которой я смогу сам это почерпнуть. Спасибо.
А ты просто расскажи своими словами, что происходит в этой строке, должен бы сам понять.
 

gray

Новичок
А ты просто расскажи своими словами, что происходит в этой строке, должен бы сам понять.
Своими словами как-то так:
Присвоит переменной userType значение true, если кол-во строк в результате запроса равно одному. В противном случае присвоить false.
Тут происходит сравнение единицы (тип int) c единицей (тип string), что, на сколько я помню, для php не так уж и важно, поскольку php их сам к одному типу.
правильно было бы так:
PHP:
mysql_num_rows($result)==1
Что еще тут может быть не так, не знаю. Конструкция правильная, может быть использовать mysql_nu,_rows() в подобной конструкции муветон?
 

С.

Продвинутый новичок
Синтаксически твоя констрикция правильная, но избыточная.
PHP:
$userType= (mysql_num_rows($result)==1);
делает ровно то же самое.
 
  • Like
Реакции: gray

craz

Нестандартное звание
Своими словами как-то так:
Присвоит переменной userType значение true, если кол-во строк в результате запроса равно одному. В противном случае присвоить false.
И все это в одной строке описано? Не многовато ли для одной конструкции? Причем название переменной точно говорит, что она хранит ТИП пользователя, а никак не булевое значение. То есть ну была бы это переменная isAdmin и ответ в ней да/нет было бы понятно. ИМХО это просто плохой стиль: стараться записать как можно больше в одной строке.
 
  • Like
Реакции: gray

WMix

герр M:)ller
Партнер клуба
уже смешно "Совершенный Код", издательство Microsoft-Press
так полистал, в общем прикольно, практически одит текст, подходы, проектирование, шаблоны... примеры на C++ и UML можно думаю на выходных углубиться....
 

WMix

герр M:)ller
Партнер клуба
Mr.Nobody надеюсь, ты сам прочел эти книги, если советуешь!
 

gray

Новичок
Mr.Nobody Спасибо,книгу заказал.
И отправился шерстить форум на предмет хороших книг.

Учтя комментарии craz, С. и Фанат написал так.
PHP:
return (mysql_num_rows($result)==1);
Такой вариант не избыточен?
 

WMix

герр M:)ller
Партнер клуба
gray вот те деньги девать некуда... (Mr.Nobody походу агент магазна ozon.ru ;) )
пока еще можно в нете найти большее колво книг бесплатно...
 

craz

Нестандартное звание
Mr.Nobody Спасибо,книгу заказал.
И отправился шерстить форум на предмет хороших книг.

Учтя комментарии craz, С. и Фанат написал так.
PHP:
return (mysql_num_rows($result)==1);
Такой вариант не избыточен?
Мое личное ИМХО(то есть не воспринимай как данность и идеал), но я боюсь таких вещей когда вижу их в коде.

Я стараюсь писать что-то типа:
PHP:
if(mysql_num_rows($result) == 1){
  return true;
}elseif(mysql_num_rows($result) == 0){
  return false;
}else{
//тут что-то произошло чего я совсем не ожидал надо как-то меня об это предупредить echo mysql_num_rows($result); хотя бы сделаю
}
Зачем я так делаю? Я даже не знаю честно говоря, а) проще читается не только для(но пройдет три месяца я забуду этот кусок, а он будет вести себя не правильно к примеру, полезу, и я бы хотел возможность понять в чем проблема, я бы переписал код, именно так) б) если я захочу поменять поведение мне будет проще

UP: кстати внизу Фанат говорит о присваивании, я вот тоже сплаховал, сам себе наврал, я бы тоже присвоил переменную и ее проверял бы. $countResult = mysql_num_rows($result); Чтобы не дергать функцию каждый раз, при проверке.
 
  • Like
Реакции: gray

Mr.Nobody

Новичок
WMixНет я не агент, моё мнение таково что прежде чем ваять войну и мир нужно прочитать, книги, мануалы и тогда много вопросов сами отпадут.Проблемы в большинстве случаев возникают из - за того что с самого начала принят неправильный подход к решению задачи, код настолько запутанный что автор не может понять почему он получил такой результат, а другие программисты не могут понять что же хотел автор.
 

Фанат

oncle terrible
Команда форума
в данном случае return напрямую делать нельзя, поскольку мы хотим отдавать переменную, которую храним в статике.
или не нашлось доброхота, который написал бы тебе простой код с сохранением результата в массиве, и ты решил вообще убрать эту проверку?

а если говорить о конкретно коде, то достаточно и
PHP:
$return = mysql_num_rows($result);
если говнокодить на голом mysql
 
Сверху