Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
// пример 1
a) $query = "SELECT id,text_name,textarea_desc,img_photo,date_reg FROM {$prefix2}_{$module} WHERE id='$id' AND check_active=1 ORDER BY $order LIMIT $limit";
или же
b) $query = "SELECT id,text_name,textarea_desc,img_photo,date_reg FROM ".$prefix2."_".$module." WHERE id='".$id."' AND check_active=1 ORDER BY ".$order." LIMIT ".$limit;
// пример 2
c) $query = "INSERT INTO {$prefix2}_{$module} SET text_name='$name',date_add=NOW(),text_fio='$fio' WHERE id='$id'";
или же
d) $query = "INSERT INTO ".$prefix2."_".$module." SET text_name='".$name."',date_add=NOW(),text_fio='".$fio."' WHERE id='".$id."'";
Как-то некий посетитель этого сайта назвал a и с -- говнокодом. Интересно узнать Ваше мнение по этому поводу.
Желательно услышать хоть какую-то аргументацию, вместо пресловутых трольских комментов ))
Все переменные перед использованием естественно приведены к безопастному виду.
Ни о каких инъекций речь просьба не поднимать...
Писать можно все. лишь бы синтаксис был верен. все 4 варианта имеют право на существование. Тут даже вопрос не в производительности. Вопрос в привычке и наличии в используемом редакторе подсветки синтаксиса. Я считаю что выбор кавычек дело каждого. другой вопрос о том что сам текст запросов трудно читаем выб их хоть не в 1 строчку писали б. 🙂
Ну имена таблиц имеют вид xxx_ru_new или же xxx_en_news и т.д.
$prefix2 - это как-бы префикс с учётом языка
$module - имя текущего модуля.
а {} нужны из-за того, что-бы переменные считались разными, т.к.
$prefix2_$module -- не прокатывает ((
Я вообще всегда следую правилу. Имена табл. в переменных не передавать опасно это. И меня смущает вот это WHERE id='".$id."'"; ну вот как то исторически сложилось что id он же индекс, а индекс в большенстве случаев целое число а Вы его в кавычки. А если не учитывать вопросы безопасности то 2 вариант мною более предпочтителен. и за того что в первом интерпретатор вставляет в строку вместо переменных значения а это какая никакая а работа. но и сходя из этого во втором случае надо поменять кавычки все двойные на одинарные а одинарные на двойные.
Все переменные $prefix2, $module, $order, $limit генерятся внутри скрипта... и они всегда корректны... пользователь их менять не может/не будет...
>> втором случае надо поменять кавычки все двойные на одинарные а одинарные на двойные.
Вот про это как-бы и вопрос был... ради чего это??? Типа для Выигрыша 1 миллиардной секунды???
Вопрос ведь вот в чём...
Почему использование переменных в " является неприемлемым???
т.е. "... $name ..." недопустимо, а ' ... '.$name.' ...' - это уже признак хрошего тона...
Лично для меня первый вариант в 100 раз читабельнее, чем вариант к разорванными кавычками и конкатенацией
Вопросы производительности тут вообще никак не влияют...
В Drupale вообще используются замены консткукций на переменные...
И вообще даже не чистый SQL, а надстройка над ним (для универсальности)...
Так что теперь считать что Drupal говнокод, т.к. можно быстрее это сделать???
В любой CMS есть говнокод, чтобы утверждать что CMS говнокод я уже слишком опытен.
Пишите как хотите, на самом деле, я пользуюсь одинарными кавычками за исключением тех случаев когда правлю чужой код или пишу для CMS. Если чужой код или CMS я пишу так как там уже написано чтобы не выбивалось из общего стиля.
Это дело привычки. при использовании " и переменных я переменые теряю. и кстати если исплользовать 1 подобную строку то не страшно а если в циклах. Как говорится одна бабушка 20 коп. , а пять вот уже и рубль.
Я не вижу сути проблемы. Если не учитывать проблемы безопасности, адекватность запросов. То это не говно. если расматривать код в практическом смысле предположить что используемые переменные могут быть изменены то это говнище аж тут воняет.
Это такой прием у быдлокодеров, постишь свое продакшн говно с пометкой это только для примера, в надежде, что кто-нибудь сжалится и напишет ему решение его же задачи за которую он бабло получает.
Интересно, ты кроме своих тупых комментов вообще что-то умное сказать можешь?
И где ты тут видишь просьбы о "сжалится и напишет ему решение его же задачи за которую он бабло получает"...
Короче потеряйся...
Ув. Товарищ я не понимаю. что Вас лично грызет в этом коде. Никакой конструктивной критики я от Вас я не вижу. А оскорблять чела. находясь от него в недостигаемости это скажу я вам пидарасеной попахивает. Если нечего сказать по существу. то хотябы не мусорте на каждый ваш пост мне на мыло письмо приходит я ужо устал чистить ящик. И кстати не кто не зхнает как энту хрень отключить. А то у меня уже мысли появилсиь не настоить ли мене спам фильтр и на говнокод. Извините что не втему.
Вопрос лишь в умении читать код.
Когда пользователь не может его читать, часто такой код называет говном.
Принципиальной разницы в запросах никакой!
Рассусоливать вопрос скорости обработки интерпретатора смысла нет, ибо наносекунды в разнице обработки - это уже чистой воды аутизм.
Из моего опыта: очень редко, кто пишет в стиле a) и c), и часто в b) и d).
Связано это с суровостью кодеров, которые пользуются простыми редактарами или вовсе текстовыми редакторами, которые переменные a) и c) не подсвечивают. Заставить использовать современные средства разработки таких товарищей невозможно. Вот они и негодуют, что им ничего не понятно.
Заключение: это не говнокод!
PS: подсветка кода в данном случае (ваш пример) не выполнена для переменных типа {$prefix} ...
$sql="
SELECT
text_name,
textarea_desc,
img_photo,
date_reg
FROM ".$prefix."_".$tablename."
WHERE 1
AND id='".$id."'
AND check_active='1'
";
$sql2="
INSERT INTO ".$prefix."_".$tablename."
SET
text_name='".$name."',
date_add=NOW(),
text_fio='".$fio."'
WHERE id='".$id."'
";
перед выполнением запроса все подобные консткуркции вырезаются двирком mySQL. это добавляется обычно только для красоты... или же когда условие формируется налету и состоит из нескольких частей
Я обычно переменные в строку вставляю, обрамляя их все фигурными скобками. Это просто визуально (для меня) проще воспринимается. А вообще — да, дело привычки.
А если в проекте на производительность начинает критически влиять использование одинарных или двойных кавычек, значит, что с проектом уже давно что-то не то.
$max = 5000;
$sum = 0;
$time = microtime(1);
for ($i=0; $i<$max; $i++)
{
$query = "SELECT id,text_name FROM ".$prefix2."_".$module." WHERE id='".$id."' ORDER BY ".$order." LIMIT ".$limit;
}
$sum = microtime(1) - $time;
echo 'Вариант с одинарными: ' . $sum . ' сек<br>';
$sum = 0;
$time = microtime(1);
for ($i=0; $i<$max; $i++)
{
$query = "SELECT id,text_name FROM {$prefix2}_{$module} WHERE id='$id' ORDER BY $order LIMIT $limit";
}
$sum = microtime(1) - $time;
echo 'Вариант с двойными: ' . $sum . ' сек<br>';
В итоге оказалось, что одинарные кавычки на самом-то деле более тормознутее ))
Вариант с одинарными: 0.0143549442291 сек
Вариант с двойными: 0.0130221843719 сек
Феерический Далбаеб!
В обоих случаях написал двойные кавычки:
"SELECT id,text_name FROM ".$prefix2."_".$module." WHERE id='".$id."' ORDER BY ".$order." LIMIT ".$limit;
Моё мнение, что для достоверного теста надо 1. Изменять значения переменных. 2. Увеличить время выполнения цикла хотябы дл минуты. 3 использовать различные длины строк. Причем длинные символов за 1000. И все станет ясно.
Че ты гонишь, у тебя все запросы такие. Тут еще никто не забыл, как ты фейлил в том треде.
PS. Яхуею с отдельных личностей из аудитории говнокода, ты ни одного фреймворка не осилил?
Говно!!!
Это я так понимаю тег который заменяется {$prefics}? Почему что то тегами, а что то нет? Неудобно все это, но не смертельно конечно
Что то из переменных, а что то из тегов, ну тут вопрос удобства - я не знаю где эти теги могут быть зарыты.
А в том можно / нельзя / говнокод.
$prefix2 - это как-бы префикс с учётом языка
$module - имя текущего модуля.
а {} нужны из-за того, что-бы переменные считались разными, т.к.
$prefix2_$module -- не прокатывает ((
>> втором случае надо поменять кавычки все двойные на одинарные а одинарные на двойные.
Вот про это как-бы и вопрос был... ради чего это??? Типа для Выигрыша 1 миллиардной секунды???
Почему использование переменных в " является неприемлемым???
т.е. "... $name ..." недопустимо, а ' ... '.$name.' ...' - это уже признак хрошего тона...
Лично для меня первый вариант в 100 раз читабельнее, чем вариант к разорванными кавычками и конкатенацией
В Drupale вообще используются замены консткукций на переменные...
И вообще даже не чистый SQL, а надстройка над ним (для универсальности)...
Так что теперь считать что Drupal говнокод, т.к. можно быстрее это сделать???
Пишите как хотите, на самом деле, я пользуюсь одинарными кавычками за исключением тех случаев когда правлю чужой код или пишу для CMS. Если чужой код или CMS я пишу так как там уже написано чтобы не выбивалось из общего стиля.
Лично мне удобно использовать варианты a/c
Так что говно здеть пока только ТЫ.
Все технические переменные проверяются и в них всегда попадает только корректная информация.
И где ты тут видишь просьбы о "сжалится и напишет ему решение его же задачи за которую он бабло получает"...
Короче потеряйся...
Когда пользователь не может его читать, часто такой код называет говном.
Принципиальной разницы в запросах никакой!
Рассусоливать вопрос скорости обработки интерпретатора смысла нет, ибо наносекунды в разнице обработки - это уже чистой воды аутизм.
Из моего опыта: очень редко, кто пишет в стиле a) и c), и часто в b) и d).
Связано это с суровостью кодеров, которые пользуются простыми редактарами или вовсе текстовыми редакторами, которые переменные a) и c) не подсвечивают. Заставить использовать современные средства разработки таких товарищей невозможно. Вот они и негодуют, что им ничего не понятно.
Заключение: это не говнокод!
PS: подсветка кода в данном случае (ваш пример) не выполнена для переменных типа {$prefix} ...
Notepad++ вроде подсвечивает у меня все переменные и в {} тоже.
т.к. других причин у людей нету. им так сказали и поэтому всё остальное для них - говнокод.
А если в проекте на производительность начинает критически влиять использование одинарных или двойных кавычек, значит, что с проектом уже давно что-то не то.
— А, вот эти двое.
— Не-не-не-не-не, в рот мне ноги.
— Вопрос только про синтаксис.
— ГОВНО!!!111
В итоге оказалось, что одинарные кавычки на самом-то деле более тормознутее ))
Вариант с одинарными: 0.0143549442291 сек
Вариант с двойными: 0.0130221843719 сек
Но в данный момент пишу в основном сайты на PHP
Ты никто и звать тебя никак.
Исчезни, недоносок.
А вообще это нанотехнологии.
В обоих случаях написал двойные кавычки:
"SELECT id,text_name FROM ".$prefix2."_".$module." WHERE id='".$id."' ORDER BY ".$order." LIMIT ".$limit;
$query = 'SELECT id,text_name FROM '.$prefix2.'_'.$module.' WHERE id='.$id.' ORDER BY '.$order.' LIMIT '.$limit;
Вариант с одинарными: 0.0105130672455 сек
Вариант с двойными: 0.0089418888092 сек
делай замеры чтобы шли хотя бы минуту,и тестируй с разными длинами строк
Каким образом выводить строку - не важно.