Концептуальный подход / Реализация правил / Обработка строк

Итак, я работаю над программным обеспечением на VB.Net, где мне нужно очищать информацию и обрабатывать ее в соответствии с правилами. Например, простые правила замены строк, такие как превращение «Det» в «Отсоединение» для определенного поля, или правило разделения / объединения, основные строковые операции. Все мои правила парсинга - это RegEx, и я храню их в базе данных в рядах наборов правил для разных ситуаций.

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


person Theveloper    schedule 29.12.2011    source источник


Ответы (1)


Я писал движки правил раньше. Обычно это плохая идея (тм).

Я бы подумал о написании правил в коде вашего приложения. Оставьте базу данных и движок правил вне ее. Во-первых, механизм правил часто сбивает с толку намерения. Трудно понять, что именно происходит, когда вы вернетесь через пару месяцев за исправлением. Во-вторых, VB (или C #, или любой другой язык по вашему выбору) содержит более подходящий словарь для определения правил, чем все, что вы, вероятно, успеете реализовать. Поверьте мне, XML - плохое представление правил. Наконец, непрограммисты все равно не смогут писать регулярные выражения ... так что вы ничего не получите от всей вашей дополнительной сложности.

Вы можете уменьшить большинство проблем с развертыванием, используя развертывание ClickOnce.

Надеюсь, это поможет.

person Sam Axe    schedule 29.12.2011
comment
Ерунда. Весь ваш ответ - полная чушь. Если бы это было правдой, мы бы все еще жили в каменном веке. Банки не работают, самолеты не летают и т. Д. Бизнес-правила - ОГРОМНАЯ часть современного программирования и анализа данных. Вы смешиваете бизнес-правила с небольшой и тривиальной задачей манипулирования строками. Бу. - person Kizz; 30.12.2011
comment
Что ж, вы, конечно, имеете право на свое мнение. Я поддерживаю свой ответ, опирающийся на двадцатилетний опыт. - person Sam Axe; 30.12.2011
comment
Я вроде как согласен с Kizz ... Мне не нужен кто-либо, кроме меня, для разработки правил, и они не будут RegEx, однако они будут охватывать множество манипуляций со строками и вместо того, чтобы изменять исходный код каждый раз, когда я хочу чтобы добавить правило, я бы предпочел создать систему, в которую я мог бы просто добавить правила (в базе данных) и посмотреть результат. Однако все правила будут ограничены сложностью движка ... но вся идея состоит в том, чтобы уйти от внутреннего кода ... Но я хотел бы знать, имеет ли это смысл или нет. Может я просто зациклился на этой идее, которая не принесет никакой пользы? - person Theveloper; 30.12.2011
comment
@ Разработчик: Я бы посоветовал вам создать его. Но после того, как вы это сделаете и будете использовать его в течение 6 месяцев, вернитесь к реализации и посмотрите, не сделали бы вы что-нибудь по-другому. У всех разные представления о том, что проще. Для меня изменить источник проще. Кто-то подходит и говорит: «Привет, Бу, это приложение, которое вы разработали, действует не так, как я ожидал (или это то, что я хочу, чтобы они сказали… обычно оно наполнено еще несколькими ругательствами)». Так что я открываю код и .. хм .. посмотри, что .. все мои правила подходят для прочтения. - person Sam Axe; 30.12.2011
comment
@ Разработчик: конечно, у меня было другое ... Я построил движок правил ... и теперь я открываю код в ответ на жалобу об ошибке ... и ... DOH ... Я не могу точно сказать, что происходит потому что правила находятся в базе данных ... так что откройте базу данных ... и ... ох ... найдите строки, которые соответствуют условию X и связанным строкам, которые управляют правилами ... и ... мне это нелегко. Но это мое мнение и у каждого свое. - person Sam Axe; 30.12.2011
comment
Попался! спасибо Бу, с Новым годом! Я собираюсь написать механизм правил, с небольшим логистическим мышлением, разработка базы данных для них не должна быть такой сложной, но это ограничение, если я хочу нормализовать базу данных и иметь динамические условия для различных типов правил такое применение будет немного сложнее реализовать, но я думаю, что это самый простой способ сделать это! Спасибо за ваше время. - person Theveloper; 02.01.2012