Где хорошее место для методов расчета данных? Как это должно называться? - PullRequest
0 голосов
/ 11 октября 2009

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

Я хочу сделать что-то вроде этого:

IEnumerable<Game> someGames;
...
int score = _something.CalculateScore(someGames);

Как называется этот слой? Может ли Хелпер быть добрым именем?

Кроме того, Модель может выполнить некоторые базовые вычисления, например:

class Ticket
{
    IList<Log> Log { get; }
    Tech LastUpdatedBy { get { return Log.Last().By; }
}

или это выходит за рамки класса данных модели?

Ответы [ 3 ]

2 голосов
/ 11 октября 2009

Использование вами термина «Модель» подсказывает мне, что вы используете архитектуру MVC. Общая философия в архитектурах MVC состоит в том, что Контроллеры должны быть как можно более "тонкими" .

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

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

1 голос
/ 11 октября 2009

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

1 голос
/ 11 октября 2009

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

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

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

...