Правильно ли, что часть бизнес-логики остается в контроллере? - PullRequest
3 голосов
/ 06 февраля 2010

с таким упрощенным классом, который регулирует игру-викторину:

class Game():
def __init__(self,username):
    ...
    self.username=username
    self.question_list=db.getQuestions()
    self.game_over=False

def get_question(self):
    ...
    if self.question_list.is_not_empty():
        return question

def check_answer(answer)
    ...
    if answer.is_correct():
        self.game_over=False
    else:
        self.game_over=True

и веб-контроллером, который получает входные параметры, такие как имя пользователя, вопросы и ответы. Правильно ли использовать класс Game непосредственно изКонтроллер?

Я задаю этот вопрос, потому что, глядя на код контроллера, я чувствую себя виноватым, что закодировал также и некоторую логику;например, контроллер создает Game как раз при получении имени пользователя, а затем вызывает get_question и check_answer по порядку.

Считаете ли вы более правильным иметь еще один «слой», который получает входные параметры от контроллера и напрямую обращается к классу Game?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2010

Я думаю, ты хороший.

Дело в том, что у вас не может быть идеальной архитектуры с полной изоляцией слоев и форматов данных, видимых только с одной стороны границы. Это неизбежно, что один слой должен будет поговорить с другим.

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

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

0 голосов
/ 17 февраля 2010

Я бы определенно держал как можно больше вне контроллера. В противном случае ваш контроллер раздут будет смешным.

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