Какие варианты у меня есть при извлечении бизнес-логики из приложения Rails? - PullRequest
2 голосов
/ 01 сентября 2011

Я хочу извлечь бизнес-логику из логистической системы, закодированной в серверной части приложения Rails, так как она становится все более и более сложной.Я почти уверен, что есть лучшие варианты, чем жестко запрограммированное множество if, даже если они украшены красивым ООП.

Я хотел бы знать, какие варианты у меня есть для этой цели.Небольшое исследование привело меня к библиотекам синтаксического анализа Treetop или Rools.Это хорошие варианты для того, что я хочу сделать?Есть ли какой-то шаблон / концепция, которую я здесь упускаю, и я могу вместо этого научиться кодировать ее самостоятельно?

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

ps: О, и действительно ли выгодно использовать новый язык для бизнес-логики вместо простого его кодирования?Потому что то, что я вижу из примеров в Treetop, похоже на DSL поверх Ruby.

1 Ответ

2 голосов
/ 01 сентября 2011

Я бы попытался извлечь бизнес-логику в драгоценный камень. Большая часть этого будет просто скопировать / вставить с некоторыми изменениями тут и там.

Большим преимуществом этого подхода является то, что ваш драгоценный камень будет просто фокусироваться на вашей бизнес-логике, поэтому он не будет иметь дело с представлением и т. Д. Пока вы все тестируете с помощью tdd, все будет в порядке.

Лучшим вариантом будет просто запросить ваш драгоценный камень, а затем вызвать его самый важный метод, например:

require 'mygem'
class SomeClass < ActiveRecord::Base
  def important_method arg1, arg2
    MyGem.compute_results arg1, arg2
  end
end

Таким образом, ваш код остается чистым и модульным, более того, вы можете легко использовать свою логику в другом приложении rails.

Это предполагает, что ваша логика - это хардкорные вычисления / код рубина. Если в вашей бизнес-логике есть несколько SQL-операторов, оставьте их в вашем приложении.

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