Pull to refresh

Comments 5

Это, конечно, всё круто интересно. Но в таких случаях проще составить текст с метками типа "@#$1" и затем использовать String.Replace

Почему? Задача у вас одноразовая. Время на генерацию одного письма даже этим неэффективным методом будет на несколько порядков быстрее отправки самого письма, поэтому затраты незначительны. А код пишется за минуты. Только обязательно протестировать нужно. Массовая рассылка всё же. Кто его знает, что с вами будет, если миллион человек мысленно пошлют вам по капле ненависти.
Время на генерацию одного письма даже этим неэффективным методом будет на несколько порядков быстрее отправки самого письма, поэтому затраты незначительны. А код пишется за минуты.

Именно. По-моему, автор построил большую такую пушку, чтобы стрелять по маленьким таким воробьям, и оптимизирует этап, и так занимающий 1% времени всей рассылки.
Во-первых, и это самое главное, я хотел рассказать о динамических функциях и байт-коде. Это только один из примеров, где их можно использовать.
Во-вторых, строковые метки, как выразился автор первого комментария, требуют кода, который будет сопоставлять их со значениями из модели. В шаблонизаторе этого не требуется. Кроме того, можно передать в модель заведомо избыточную информацию (данные о пользователе — порядка 30 параметров, данные о рассылке, данные о системе), а автор шаблона, который вообще говоря не является программистом, сам решит, какие поля ему нужны в шаблоне, а какие нет.
В-третьих, задача не одноразовая. В различных вариантах мне приходилось решать ее и ранее.
Я не про полный отказ от вашего решения (хотя почти наверняка найдется несколько бесплатных уже существующих вариантов), а именно про его оптимизацию. Как абстрактное решение для каких-то случаев, где нужна «скриптовость» решения — да, вполне подходит.

Почему не использовались Expressions? Особых фич, доступных только в IL, я тут не заметил — а использовать Expressions намного проще...

Sign up to leave a comment.

Articles