[Moscow.pm] get own source code
PEF Secure
pef-secure на yandex.ru
Пн Мар 30 17:31:17 PDT 2015
On Monday, March 30, 2015 21:01:36 Maxim Vuets wrote:
> Как по мне это плохая идея. А аргументация слабая и поверхностная.
Есть очень много плохих идей написанных "правильно". Аргументации, кроме
наличия у меня положительного опыта, я не приводил, поэтому согласен, она
слабая.
> Конечно, это только ваше дело что и как использовать. И вы, как я
> понял из прошлого ответа, не очень расположены обсуждать основной
> вопрос, потому я не буду продолжать.
Я мог бы обсудить что-то, поддающееся обсуждению. C-like макросы понятно будут
выглядеть ужасно, поэтому используется Filter::Simple.
Ладно, попробую, если не получится, свернусь. Существуют шаблонные куски кода,
они небольшие, выполняют какие то проверки и должны заполнить значения каких-
то переменных, которые используются в дальнейшем в основном алгоритме. Такие
куски кода, я считаю, удобно написать один раз, не в виде функций, поскольку
этим функциям придётся передавать множество аргументов, а их возвращаемые
значения копировать туда-сюда или хешем -- это всё засоряет текст, замыливает
глаз и мешает читать основной код. В итоге у меня получается система макросов,
которые скрывают это всё, остаётся только смысл выполняемого действия.
Например, как может выглядеть обработчик, отвечающий на запрос получения
информации о текущем клиенте, чтобы знать кому веб-сайт должен сказать
"привет":
handler get user info : prolog(get_user) {
return {
name => $user->name,
email => $user->email,
last_login => $user->last_login,
result => "OK",
};
end_handler;
}
В данном случае, handler создаёт обработчик "состояния" сессии в POE, псевдо
атрибут prolog вызывает генерацию части get_user, которая создаёт объект $user
из переданного ключа веб-сессии и добавляет информацию о пользователе в
текущий контекст, чтобы можно было его добавить в лог, end_handler завершает
формирование функции, создавая обработчик результата. Если развернуть эти
несколько строк в получаемый результат, то там будет строчек на 20 больше.
Писать подобные обработчики, на мой взгляд, быстрее и проще, чем на "настоящем
перле". Читать и проверять код тоже. Ещё плюс в том, что это ничего не стоит с
точки зрения производительности, код генерируется один раз на этапе
компиляции. Конкретно в данном случае, удобно видеть какие запросы требуют
авторизованного пользователя.
Побочный эффект такого "псевдо-языка" ещё в том, что когда я решил менять POE
на EV+pre-fork, в коде проектов не придётся ничего менять, всё полностью
совместимо.
--
PEF Developer
Подробная информация о списке рассылки Moscow-pm