[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Стилизация - нескольких запросов vs одного
Страницы: 1, 2, 3, 4
GET
Привет, есть логически очень сложный скрипт в котором формируются 32 вида MySQL запроса (не считая order by - x 3 варианта).

Как думаете, как удобнее - сделать один сборный запрос что-то типа такого:

$SQL="SELECT * $fields
FROM $tab
$join

WHERE $where
$order
";


плюсы: краткость и универсальность
минусы: нет наглядности, нет гибкости настроить каждый запрос под себя (например, в некоторых соединениях не делать JOIN из-за малого количества)

------------------

или внимательно расписать в блоках по условиям IF/ELSE (максимум до 4-х уровней глубины х 8) каждый запрос:
if($a=='')
{
$SQL="
SELECT `id1`,`name1`
FROM `tab1`
INNER JOIN `tab2`..."
;
}
else
{
if($b=='')
{
$SQL="
SELECT `id1`,`name2`
FROM `tab1`
INNER JOIN `tab2`..."
;
}
else
{
if($b=='5')
{
...
}
else
{
if...
}
}
}




плюсы: гибкая настройка, каждый запрос прекрасно видно
минусы: занимает очень много места (если всё красиво расписать около 1000 строк кода), в случае редактирования придется все их перебирать

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
twin
Истина, как обычно, посередине. Однотипные запросы вряд ли есть смысл расписывать по отдельности, всегда можно посмотреть, что там получилось в итоге, просто выводя на экран переменную $SQL.

Иначе плюсы
Цитата (GET @ 20.08.2016 - 00:52)
гибкая настройка, каждый запрос прекрасно видно
рискуют пеейти в минусы, как минимум антипаттерн "мягкое кодирование".

С другой стороны, поытаться собрать всё мыслимое и немыслимое в одну "рыбу" грозит жутко запутать логику.

Так что универсального совета нет и быть не может.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
GET
twin
Спасибо.

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

Второй вариант немного громоздкий, но тут нужно смотреть кто будет поддерживать код, даже ты через некоторое время забудешь, значит нужно хорошо закомментировать.

Я бы сделал исходя из производительности, потому как всю логику можно описать в отдельном файле, при необходимости.

_____________
Принимаю заказы, писать в ЛС
GET
Медведь
Спасибо.

Ну, короче, изменил порядок формирования блоков if/else так чтоб более родственные встали рядом и вуаля - нарисовались общие элементы, и код сократится вдвое, а то и вчетверо в некоторых местах.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
chee
Цитата (GET @ 20.08.2016 - 04:52)
если всё красиво расписать около 1000 строк кода

зашквар. Проанализаровать задачу, провести декомпозицию, написать код, вот правильный путь. Сейчас же ты поступаешь как низкосортный кодер.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
sergeiss
Цитата (GET @ 20.08.2016 - 04:52)
сделать один сборный запрос что-то типа такого:...
...например, в некоторых соединениях не делать JOIN из-за малого количества...

Сделай 2 шаблона - "сборных запроса", как ты их назвал. Один с джойном, другой без джойна smile.gif

Насчет 2-го варианта. Прикинь, что тебе как-нибудь понадобится добавить/убавить всего одно поле в списке полей. Тогда придется прошестить "овер 1000 строк кода"... Оно тебе нужно? А в первом варианте это будет сделано легко и просто.



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Ron
Архитектура БД точно правильная? Что-то очень подозрительно.

Цитата (chee @ 20.08.2016 - 21:10)
Сейчас же ты поступаешь как низкосортный кодер.

Ну, знаешь, чтобы никто не заметил есть жеж ioncube. biggrin.gif

Если есть необходимость, запросы по типам выносятся в методы с говорящими названиями, где и формируются по входным данным. Там же все условия относящиеся непосредственно к лексике. Вот и всё.
GET
Я взялся переписать этот скрипт потому как сейчас и сделано все по 1 варианту и ничего не понятно. По всему скрипту собираются его кусочки и в конце скрипта вдруг вылазит этот запрос SQL как Франкенштейн. Что? Откуда? Где? Почему так? Зачем делать JOIN, когда можно обойтись без него в некоторых запросах?

Вариант с 32 - запросами конечно не вариант. Но вариант с 12 запросами - это уже нормально. Главное мне, выдержать баланс между наглядностью, прозрачной логикой и универсальностью.

И как я написал выше - вопрос снят, будет нечто среднее из 12-16 запросов.


sergeiss
Да, я уже придумал, я там выше отписал, что сделал среднее между ними запросов стало намного меньше.


chee
Цитата
зашквар. Проанализаровать задачу, провести декомпозицию, написать код, вот правильный путь. Сейчас же ты поступаешь как низкосортный кодер.


Ну я стараюсь smile.gif Мне главное, чтоб было удобно работать в дальнейшим с этим скриптом, легко менять его, видеть что там.


Ron
Цитата
Архитектура БД точно правильная? Что-то очень подозрительно.


Сейчас выложу дамп, шоб ты оценил.

Цитата
Если есть необходимость, запросы по типам выносятся в методы с говорящими названиями, где и формируются по входным данным. Там же все условия относящиеся непосредственно к лексике. Вот и всё.


Зачем там ещё методы городить, ну куда понесло? Хочешь чтоб все было красиво, но забываешь о главном - что это просто не нужно - кодерские понты, отнимающие у скрипта время.

И причем здесь вообще ioncube, правда думаешь что мне есть дело до того, кто меня кем считает?





_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Ron
Цитата (GET @ 21.08.2016 - 03:48)
Сейчас выложу дамп, шоб ты оценил.

Ты главное бабло приготовь, если хочешь чтобы оценивал именно я. wink.gif

Цитата (GET @ 21.08.2016 - 03:48)

правда думаешь что мне есть дело до того, кто меня кем считает?

Уверен что да! =))

Цитата (GET @ 21.08.2016 - 03:48)
кодерские понты, отнимающие у скрипта время.

Это у тебя получается говнокод, отнимающий тонну времени каждый раз когда нужно подправить логику.

Much to learn you still have...

GET
Ron

Книга Притч, гл. 26 - 4/5

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Ron
GET, правильно, даже и не слушай глупца! ))) Шариков тоже никого не слушал, даже Преображенского. Получать оскорбления от малограмотных людей, видимо, часть русских традиций.

Ты вот в детских коллажах преуспел, но в программировании что-то неочень. Нет бы заняться делом. А то тебя в группу приняли, но ты славы ей не приносишь, если честно. Да и тебе она не помогает, может быть лишь усиливает ЧСВ, что особенно противно.

И ты нам еще будешь говорить, что не важно мнение окружающих!? Думаешь я не помню как ты канючил членство в группе? Фаршманулся ты бро по полной программе, можешь еще пару раз меня оскорбить, по этому поводу. biggrin.gif

chee
Ron, ты обвиняешь его в завышенном ЧСВ, а сам то уже потолок пробил своим ЧСВ.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
GET
Цитата
Ron, ты обвиняешь его в завышенном ЧСВ, а сам то уже потолок пробил своим ЧСВ.


Да он просто молодой еще, может даже немного глупый и неопытный.

У меня, к сожалению, совершенно сейчас нет времени сюда заходить и помогать людям, как мне помогали в свое время: twin, Invisible, inpost, Valick, FatCat, killer8080, sergeiss, Igor Vasilevsky, kaww и т.д. :
Всех можно посмотреть в этом
ролике
: или в
этом
https://rutube.ru/video/a58c164281f8e616e4a0ddd2297ee250/
, которые я делал в благодарность этому форуму. Да и я и сам многим не раз помогал и многие меня благодарили за это. И я не знаю как меня можно обвинить в ЧСВ, я никогда не Якаю...и не пишу, какой я там супер...

А то, что я в группу попросился дак чтоб форум оживить, там один Игорь был и всё. Сами видите, как посещение упало. И очень рад, что такие парни как Медведь, Zzipesh, Wind, Exotica к нам присоединились.

А глупый ты, Ron потому что ты до сих пор не научился уважать своих коллег, а чтоб научится надо не просто познать код, а посидеть месяцами, а то и годами вкладывая душу в свою мечту, будь это сайт, курсы программистов или даже работа просто работа, которую ты любишь.

Если хочешь я могу прислать тебе приглашение в группу, без всяких там обид. smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
inpost
GET
Вопрос из разряда: с какой ноги встать с кровати. Всякие условные конструкции лепим когда они нужны, типо собирательный запрос. А если к нескольким таблицам, но простой, то почему бы и не написать в одном запросе.
Я в целом в программировании понял единую истину, запреты создают только проблемы. Вечно пытаются что-то придумать, что-то запретить, типо "так грамотнее". Правильнее всего разнообразие, когда применяешь по смыслу код, ИМХО!

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.