Re[95]: Тормознутость и кривость linq
От: · Великобритания  
Дата: 30.04.16 20:27
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ты имеешь в виду компилируемым? ) Но тогда он будет уже зависеть от особенностей языка и соответствующих библиотек в нём. Так это просто идея была универсальная... Ну да ладно, чтобы не придирались (а то бывают тут неадекваты, которые сразу начнут орать "ааа не можешь", хотя задачка для школьника) покажу пример на той же самой библиотечке C++:

_>
_>auto q=dynamic_select(db).columns(all_of(Product)).dynamic_from(Product).dynamic_where();
_>if(categoryName||categoryColor||categoryGroupName) q.from.add(dynamic_join(Category).on(Category.id==Product.category_id));
_>if(categoryName) q.where.add(Category.name.like(*categoryName+"%"));
_>if(categoryColor) q.where.add(Category.color==*categoryColor);
_>if(categoryGroupName) q.where.add(Category.group_name==*categoryGroupName);
_>

И где обещанные compile-time проверки? Такую байду я и на PHP могу ваять. Как compiler проверит, что условие в первом if верное и ты не нарвёшься на unknown column из-за забытого join?

Да и вообще. Ты уже заметил разницу? Вместо трёх тривиальных if тебе пришлось забабахать ещё один магический новый (кстати надо было два, т.к. у меня было Category.Group.Name — т.е. ещё один join). А ведь мы ещё проекции не добавили, а ещё сортировки есть... Сложность кода растёт экспоненциально.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 30.04.2016 20:50 · . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.