Переключение на ORM

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

Это звучит правдоподобно с вашим опытом?
Это возможно или даже хорошая идея, чтобы включить его?
Каковы недостатки ОРМ?

22.08.2008 10:05:44
7 ОТВЕТОВ
РЕШЕНИЕ

Я настоятельно рекомендую получить копию книги Майкла Фезера « Эффективная работа с устаревшим кодом» (под «Устаревшим кодом» подразумевается любая система, которая не охвачена модульными тестами). Он полон хороших идей, которые должны помочь вам в рефакторинге и внедрении лучших практик.

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

Недостатки ORM - исходя из опыта, неизбежно возникает некоторая кривая обучения в освоении концепций, конфигурации и особенностей выбранного решения ORM.

Редактировать: исправлено имя автора

3
23.08.2008 10:24:43

Правило рефакторинга есть. Делать юнит-тесты.

Поэтому, может быть, сначала вы должны сделать несколько юнит-тестов, по крайней мере, для основных / основных вещей.

ORM должен быть разработан для уменьшения кода шаблона. Время / трудность против ROI, чтобы быть предприимчивым, зависит от вас, чтобы оценить :)

0
11.08.2012 16:10:59

Я слышал, что TypeMock часто используется для рефакторинга устаревшего кода.

0
22.08.2008 10:11:36

Я серьезно думаю, что введение ORM в унаследованное приложение требует проблем (и может быть таким же, как и полное переписывание).

Помимо этого, ORM - это отличный способ, и его обязательно следует рассмотреть.

0
22.08.2008 10:45:40

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

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

Таким образом, если у вас нет веских оснований для принятия на себя рисков, вероятно, лучше оставить все в порядке.

0
11.08.2012 16:11:08

Я работаю над большим приложением ASP.net, где мы недавно начали использовать NHibernate. Мы переместили большое количество доменных объектов, которые мы сохраняли вручную, на Sql Server вместо этого в NHibernate. Это немного упростило вещи и значительно облегчило их изменение со временем. Мы рады, что внесли изменения и используем NHibernate, где это уместно для многих наших новых работ.

1
22.08.2008 11:57:41

Книга "Robert C Martin", которая была написана Майклом Фезерсом ("Дядя Боб", кажется, в наши дни является торговой маркой!) Является обязательной.

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

Но это не проблема. Рефакторинг - это изменение дизайна без изменения функции (надеюсь, я не слишком сильно повредил смысл), чтобы вы могли работать гораздо шире.

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

Теперь вы можете начать рефакторинг. Вы хотите начать извлекать код доступа к данным, чтобы его можно было заменить функциональностью ORM без особых проблем. Часто тестируйте: с устаревшими приложениями вы будете удивлены, что ломается; сплоченность и сцепление редко бывают такими, какими они могут быть.

Я также подумал бы о том, чтобы посмотреть на Рефакторинг Мартина Фаулера , что, очевидно, является окончательной работой над процессом.

2
22.08.2008 12:38:08