Помещать вызовы DataService в классы Helper? - PullRequest
0 голосов
/ 15 октября 2010

У меня есть несколько моделей ViewModel, которые все делают одно и то же: del / add / export и т. Д. На данный момент код для вызова этих методов живет в моделях представления. Поэтому я должен скопировать / вставить его ... Когда я помещаю этот код в класс DocumentHelper, у меня есть только один раз, но видите ли вы какую-либо причину против вызова методов базы данных из класса Helper?

Ответы [ 2 ]

2 голосов
/ 15 октября 2010

Выраженный ДА , вы должны переместить свой код в класс помощников.

Я твердо верю в принцип 1005 * Прагматического программиста * Не повторяйся ,Это тот, которому вы должны стремиться следовать.Копируя и вставляя код, он делает внесение изменений неприятной болью, поскольку вам нужно найти каждое место, где вы скопировали этот код, и изменить его там.Техника копирования и вставки уничтожает любую вашу ловкость и превращает рефакторинг в кошмар.

0 голосов
/ 16 октября 2010

Я хотел прокомментировать поддержку комментария Трэвиса Г., но мне не хватило места - отсюда и этот «ответ».

Вы хотите быть осторожным, как вы строите свою систему относительно зависимостей; имейте в виду, как многократного использования вы хотите, чтобы все было. Если DocHelper ссылается на модель, то в любое время, когда вы захотите повторно использовать Dochelper (скажем, в другом приложении), вам также придется использовать модель.

Два возможных подхода:

Вещи, которые являются "общими" в контексте модели, находятся в сборке модели.

MyApp.Model  // including Model Helpers
MyApp.Common // contains generic helpers

С точки зрения ссылок, Model может ссылаться на Common - но не наоборот.

Вещи, которые являются «общими» в контексте модели, находятся в отдельной сборке - и эта сборка является выделенным «помощником» модели; вещи, которые действительно являются общими, должны быть в отдельной сборке, например:

MyApp.Model
MyApp.ModelHelper // Model helpers are kept separate
MyApp.Common      // contains generic helpers

В этом случае Model будет ссылаться на ModelHelper, а Model и / или ModelHelper может ссылаться на Common.

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