http://namerec.blogspot.ru/2014/04/blog-post.html
Что сказать...
Выглядит - КРУТО и ВНУШАЮЩЕ...
Но!
Я попробовал применить подобную технику в своих проектах.
Что могу сказать?
Мне ЛИЧНО - неудобно.
Очень сложно отлаживать. Break-point'ы ставятся на "всю вязанку" выражения, а не на конкретные строки.
Посему - мне ЛИЧНО - неудобно.
Но выглядит - "ЗАМАНЧИВО".
Что сказать...
Выглядит - КРУТО и ВНУШАЮЩЕ...
Но!
Я попробовал применить подобную технику в своих проектах.
Что могу сказать?
Мне ЛИЧНО - неудобно.
Очень сложно отлаживать. Break-point'ы ставятся на "всю вязанку" выражения, а не на конкретные строки.
Посему - мне ЛИЧНО - неудобно.
Но выглядит - "ЗАМАНЧИВО".
Преимущества подхода, проиллюстрированного примером в том, что он позволяет абстрагироваться от СУБД.
ОтветитьУдалитьГлавное, чтобы СУБД поддерживала SQL - транслятор учтёт её специфику.
Код на Pascal, описывающий SQL, очень похож на тот SQL, который требуется создать. В результате, такой код писать довольно удобно.
Далее, формируемый код проходит определённую верификацию в момент компиляции: поскольку создаются интерфейсы - с ними просто невозможно сделать то, чего они не предоставляют. С другой стороны, если SQL записан в строке, там можно написать всё, что угодно - ошибка проявится при попытке выполнить такую строку.
Относительно отладки. Я действительно не считаю эту проблему существенной по ряду причин.
В случае, если что-то работает "не так", при локализации проблемы сначала проще верифицировать полученную структуру. Например, можно получить строковое представление полученного запроса в виде JSON/XML или, даже готового SQL. После этого уже смотреть на то, что выглядит не так, как ожидалось и расставлять точки останова.
Очень сложно отлаживать. Break-point'ы ставятся на "всю вязанку" выражения, а не на конкретные строки.
-- В целях отладки, если очень хочется, можно всегда разорвать fluent-цепочку. В таком случае можно заходить в методы интерфейсов привычным способом.
Ну и по опыту (я в комментариях это отметил) - отлаживать формирование структуры запроса приходится очень и очень редко.