Как вы справляетесь с исключительными случаями - PullRequest
1 голос
/ 29 ноября 2008

Это часто ситуация, но вот последний пример:

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

Итак, как я должен обрабатывать данные, когда все ведет себя одинаково, кроме «этой вещи», которая ведет себя таким образом, и «той вещи», которая ведет себя как-то по-другому, и сами данные являются действующими, должны редактироваться клиентом.

Ответы [ 5 ]

1 голос
/ 09 декабря 2008

Я бы рекомендовал для этого шаблон разрешения , основываясь на упоминании базы данных. Ссылка выше описывает это, но на самом деле это намного проще, чем кажется. Вы пишете запрос к базе данных, который возвращает все возможные опции (например, вы читаете стандартные опции и настроенные опции вместе, используя, возможно, UNION или JOIN, в зависимости от вашей схемы) - ключевое слово SQL COALESCE тогда полезно для поиска первого ' Resolution 'значения параметра, которое не равно NULL.

1 голос
/ 29 ноября 2008

Прежде всего, подумайте дважды, действительно ли вам это нужно. Причина проста. Предполагается, что вы удовлетворяете конкретным потребностям, а входные данные являются средством предоставления этой услуги. Если данные не соответствуют существующей услуге, какова ее ценность и кто является потребителем этой конкретной информации?

Есть два возможных ответа: Вы расширяете свою клиентскую базу или вам нужно изменить существующую услугу из-за изменения спроса. В обоих случаях нужно начинать с разработки бизнес-модели. Если вы опишите, какой сервис вам нужен и какую информацию он должен предоставить, вы избежите значительной части конкретных данных и получите четкие требования, которые легко внедрить в программное обеспечение.

1 голос
/ 29 ноября 2008

Вы пометили свой вопрос как «независимый от языка», и не все языки поддерживают полиморфизм, но я бы так к этому подошел.

Каждый параметр имеет некоторый тип, а для разных типов требуются разные свойства. Однако каждый тип поддерживает какой-то метод «рендеринга», который может отображать метод контакта по мере необходимости. Поскольку свойства (номер телефона или веб-адрес и т. Д.) Зависят от типа, вы можете проверить ввод администратора при создании этих «объектов», чтобы убедиться, что необходимые данные предоставлены и действительны. Поскольку вы реализуете метод рендеринга, а не выплевываете HTML, предоставленный пользователем, вы можете убедиться, что отображаемая страница верна. Он менее гибкий, но более безопасный и удобный для пользователя.

В базе данных вы можете иметь одну малонаселенную таблицу, содержащую данные для всех типов контактов, или «родительскую» таблицу с общими свойствами и вложенные таблицы со свойствами, специфичными для типа. Это зависит от того, сколько у вас типов и насколько они разные. В любом случае у вас будет какой-то тип индикатора, чтобы вы знали тип объекта, к которому должны быть привязаны данные.

0 голосов
/ 30 ноября 2008

Написав очень простой движок правил . Вы можете использовать готовую реализацию, или вы можете свернуть свою собственную. Поскольку ваш случай кажется таким простым, я склоняюсь к собственному, потому что это означает меньше зависимостей (YMMV).

0 голосов
/ 29 ноября 2008

Что ж, если все, что у вас есть, это два специальных параметра, а затем все остальное обрабатывается таким же образом, сохраните ваши параметры в виде строк, и если один из двух специальных вариантов появится в этом списке , а затем показать соответствующий материал для этого специального элемента.

Просто проверьте ваш список предметов для двух специальных. Ничего особенного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...