0

Как люди организуют сложные методы? Я имею в виду, где программисты обычно ставят методы, которые действительно не принадлежат какой-либо конкретной модели, но вместо этого используют 3-4 модели и 2-3 области для принятия некоторых сложных решений?Сделать сложную логику проще

Например, сердце приложения я работаю прямо сейчас следующий сценарий:

@items_to_post = Item.where(calendar_id: Ad.ready_to_post.collect(&:calendar_id).uniq).not_posted_yet(ad) 
if @items_to_post.renewable.count > 0 
    @output = "Please Renew First" 
else 
    @first_item = @items_to_post.first 
    @post = Post.new(title: @first_item.randomizations.first.title, body: @first_item.description, ...) 
    ... 
end 

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

Я поместил все это в свой ExportController, который является уродливым, особенно для Controller, потому что он нарушает соглашение MVC, но я понятия не имею, что с ним делать.

Где вы, ребята, обычно ставите такие методы?

ответ

0

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

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

+0

После прочтения вашего ответа пару раз - я, наконец, понял, «кто должен делать эту работу». Благодарю. –

+0

Рад, если это имеет смысл. Как примечание к MVC - лично, когда я вижу классы под названием «______Controller», я испугался, потому что люди часто вставляли слишком много кода и логики в «Контроллеры». –

+0

Да, мне тоже это не нравится. Контроллер просто отвечает на запросы. Вот почему я спросил, как его переместить. –

Смежные вопросы