![]() |
Универсальный алгоритм обработки результатов
Привет.
Есть несколько тысяч операций, которые выдают результаты различного типа. Каждый результат надо обрабатывать по определенной формуле и определять хорошо или плохо. Все было просто, когда обработка была на сравнения с каким то параметром. Например результат число больше 200, или строка != "", ну и если результат массив, то обычно проверялась его длина или искался элемент в нем. Я до сих пор использовал формулы в обратной польской нотации (ОПН), куда подставлялся результат. Было более менее универсально. Теперь проблема. Появилась необходимость искать подстроки в строках или в массиве строк, использовать регулярные выражения. ОПН в некоторых местах поломался, из-за спецсимволов. Вот хочу найти альтернативу, но чтобы было универсально. Хотел перейти полностью на регэкспы, но сомневаюсь, что они умеют сравнивать больше меньше. У меня пока вариант, использовать регэкспы в довесок к ОПН, но только для строк. |
Написать валидаторы с стандартизированным интерфейсом, которые будут принимать параметр и выдавать результат.
|
Почитайте про шаблон Specification http://martinfowler.com/apsupp/spec.pdf
|
Цитата:
Цитата:
|
Начинка может быть какая угодно, тут как раз нет необходимости приводить начинку к одному виду. Унификацию проверки реализует валидатор.
|
То есть для чисел один валидатор, для строк другой, для массивов третий? Если да, имеет ли смысл дробить их еще мельче по виду проверки - отдельный валидатор для больше, отдельный для меньше, третий для равно?
|
Именно. Имеет ли смысл дробить это тебе решать, можно и подробить.
|
Валидаторы, описанные alatar, по сути и есть Спецификации по Фаулеру.
Цитата:
В статье, на которую я дал ссылку, написано как удобно делать композитные валидаторы. |
Цитата:
Цитата:
Цитата:
Спасибо. |
Цитата:
|
| Часовой пояс GMT +4, время: 21:46. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.