четверг, 30 декабря 2010 г.

Проектирование Service Layer

Пара советов для всех интересующихся решающих в принципе любые вопросы что здесь возникали, по крайне мере с точки зрения "кошерности" и "правильности".

1. Все заложено в ООП. Разучите наизусть S.O.L.I.D и повторяйте про себя когда думаете где что должно быть.

2. Будь то ДДД или что-то другое, возьмите отдельный кажущийся самостоятельным объект системы или бизнес логики. Отбросьте все остальное: mvc фреймворки, сервисные слои, хтмл формы паттерны. Это просто объект "Пользователь", например. Напишите класс и засуньте туда ВСЁ что на ваш взгляд относится к этому объекту. Все аспекты состояния и поведения. Напишите unit test для этого объекта который бы все эти аспекты тестировал. Это к вопросу о том где должна быть валидация.

3. Если объект который вы напроектировали похож по описанию на какой-то популярный паттерн - назовите его также, чтобы другие поняли. Не наоборот - назвали сервисом а потом сидим все вместе думаем что в нем должно быть и что он делает.

4. Проектируйте и по возможности разрабатывайте слои "снизу вверх". Делайте User, потом делаете UsersRepository потом UsersService потом UsersController. Продумывая слой забудьте про всё, что "выше".

5. Более конкретный "хинт". Когда делаете модель для MVC приложения, будь то ДДД, сервисная архитектура, Table Module или монолитный Transaction Script с sql запросами внутри каждого метода не думайте об MVC. Представьте что вы делаете консольное приложение например. А потом приходит внезапно заказчик и говорит - к существующей базе кода приделайте веб морду.

В реальной жизни все конечно не всегда так как хотелось бы, иногда стоит использовать Zend_Form, зашить все приложение в MVC, sql запросы в контроллерах, один файл с хтмл пхп кашкой. Иногда может быть так правда окажется выгоднее или быстрее (в основном когда нет понимания лучшей альтернативы или отсутствует грамотный инструментарий а самому долго делать) но надо понимать что зачем и какой ценой.
Да это все просто и всем понятно, но такое ощущение что все вообще забывают что и зачем происходит, паттерны ради паттернов.

Взято с форума

Комментариев нет:

Отправить комментарий

Спасибо за ваш комментарий!