- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
function catGetCategoryById($categoryID)
{
$categoryID = (int)$categoryID;
$q = db_query("select categoryID, name, parent, products_count, description, picture, ".
" products_count_admin, sort_order, viewed_times".
", allow_products_comparison".
", allow_products_search".
", show_subcategories_products, meta_description, meta_keywords ".
" from ".CATEGORIES_TABLE.
" where categoryID=$categoryID");
return db_fetch_row($q);
}
снова ShopScript...
пересчитал ради интереса количество полей в таблице - как и в запросе 14. вот хотел я добавить еще одно поле. хорошо, что посмотрел, как берутся данные
interested 03.10.2009 13:52 # 0
gorky 03.10.2009 14:05 # 0
gorky 03.10.2009 14:14 # 0
вообще для меня тут больше играет роль что нужно добавлять в список полей еще одно, что не очень удобно + код читабельнее со звездой все же.
interested 03.10.2009 16:23 # 0
Oleg_quadro 03.10.2009 20:54 # +4
Если в таблица добавятся столбцы неизвестно куда, то этот код будет работать.
Да к тому же сразу видишь где какой столбец вернулся, не надо в базу глядеть.
Негодую, не говнокод, минусую.
guest 03.10.2009 21:24 # +1
interested 04.10.2009 08:48 # +1
Если речь идёт о том, чтобы вынуть два - три поля из десяти -- конечно нужно. А если вынуть все поля, тогда банально вы гоняете по сети лишние байты текста, кроме того, я уверен, что во всех СУБД есть оптимизации выборки по скорости всех полей.
Плюс, в некоторых случаях, звёздочка является элементом проектировки. Например, если таблица представляет структурированные записи, и вы пишите запрос по выборке определённых структур, например данных в узлах циклического подграфа, при этом сама программа по коллекционированию данных ничего не знает о том, что именно может хранится в узлах.
Программист, который занимает одну позицию -- плохой программист. Проектировка -- это всегда выбор. В разных ситуациях выбор может пасть на различные решения.
gorky 04.10.2009 14:51 # −1
плюс к этому меня, как пользователя функции вообще не должна заботить ее начинка, и если функция называется catGetCategoryById то она должна действительно взять ВСЮ категорию, а не часть данных, даже если изменилась структура БД.
Wry 05.10.2009 12:55 # +2
Не говнокод - минуснул.
gorky 05.10.2009 14:39 # 0
а 5% процентов меня не волнуют на самом деле, мне важно меньше кода затрагивать при добавлении функционала.
gorky 04.10.2009 14:47 # −2
>Да к тому же сразу видишь где какой столбец вернулся, не надо в базу глядеть.
вовсе не видишь, если выборка запехана в отдельную функцию, не видную сразу же. тут уже становится проще и надежнее посмотреть непосредственно на таблицу в СУБД.
guest 05.10.2009 10:44 # +2
gorky 05.10.2009 11:06 # −1
во-вторых, я как раз хочу чтобы собрание сочинений таки было доступно. если не нужно будет - я это поле из перечисления уберу.
в-третьих снова повторяю, для особо слоупочных, что в этом примере из таблицы выбираются все поля, независимо от типа поля.
и, в-четвертых, каким образом звездочка мешает ORM?
Wry 05.10.2009 13:01 # +1
Касательно ORM и звездочки вообще молчу - RTFM, одним словом.
guest 05.10.2009 16:52 # +1
guest 05.10.2009 18:01 # 0
я согласен с этим, но тогда вообще незачем было писать универсальную функцию.
gorky 05.10.2009 18:17 # 0
Holden 06.10.2009 09:52 # −1
Здесь верный подход, кроме как этой куевой тучи конкотенаций.
anmiles 06.10.2009 17:59 # 0
Хотя в таких случаях её использование можно оправдать разве что ленью :)
interested 07.10.2009 11:14 # 0
А ленивые программисты пока будут повторно используя код выходить на рынок быстрее.
Чего это я вас отговариваю названия писать? Пишите, пишите.
А я за это время успею свою звёздочку продать без потери производительности.
guest 17.10.2009 20:25 # +1