2009-02-05 3 views
3

Итак, у меня есть taken over a Java Web project. Приложение было написано другим разработчиком, который теперь работает в другой компании. Вообще говоря, приложение прост, хорошо продуман и достаточно документирован. Единственная проблема в том, что предыдущий разработчик решил создать свою собственную библиотеку доступа к базе данных вместо использования популярной структуры. За годы своей карьеры в программировании он создал впечатляющую инфраструктуру для доступа к любой базе данных (что-то похожее на легкий Hiberbate).У вас есть два фреймворка в одном проекте?

Теперь у меня нет причин выбросить его код и заменить слой данных более обычным JPA-слоем, так как текущий код работает просто отлично (хотя это заманчиво!). Но мне было интересно, следует ли использовать более традиционные рамки с новыми функциями. Стек приложения прост, и я могу легко подключить Hibernate или JPA. Таким образом, старые страницы (с новыми исправлениями) будут использовать старую структуру, а новая страница будет использовать новую структуру.

Одним из недостатков этого подхода является то, что он может запутать нового разработчика. Тем не менее, я также могу продолжать использовать старую структуру, расширяя/фиксируя ее по мере необходимости. Как я уже сказал, это работает!

ответ

4

Eldimo,

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

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

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

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

0

Настоящий недостаток в том, чтобы сделать что-то вроде этого, - это риск того, что один фреймворк внесет изменения в базу данных, которые другая структура сразу не подберет. Я столкнулся с этим, прежде чем использовать комбинацию NHibernate + ADO.NET: если NHibernate кэширует что-то, он может игнорировать изменения ADO.NET.

Если вы можете уменьшить это, нет ничего технически неправильно в этом.

9

Вы, конечно же, не хотите добавлять фреймворки по прихоти, но противоположное тоже плохо, написание собственной psuedo-рамки, когда существует приемлемая альтернатива. В моей работе нам пришлось преобразовать JPA в более JDBC-стиль с использованием Spring. Во время преобразования я не удалял и не изменял какой-либо код JPA, я просто переписал его в JDBC. Как только мне было удобно, что какой-то конкретный метод работал, я бы заменил реализацию. Это позволило мне переделать конверт, не вытаскивая коврик из-под уровня обслуживания, так сказать. Поэтому, чтобы полностью ответить на ваш вопрос, вполне нормально иметь 2 фреймворка, пока план должен мигрировать к тому или другому.

1

«это работает» - не трогайте!

Возможно, стоит создать корпус для выполнения этой работы - тесты производительности, исследования масштабируемости и т. Д. Если вы не найдете веских оснований, оставьте это для проектов, которые в настоящее время его используют. Если будет получено достаточное количество ошибок, которые сводятся к БД, тогда есть случай для переноса на хорошо поддерживаемый бэкэнд. Если производительность низкая для обоих, то, возможно, исходный JDBC - это путь, а не переключение абстракции.

1

В этом случае, я думаю, что ответ «да» .... если вы действительно можете сделать использование функций Hibernate или JPA обладают, что наследие библиотека не делает и если вы уверены, не будет нарушать ничего, что в настоящее время существует.

Включая Hibernate или JPA, вы не только несете часть ответственности за обслуживание этих команд разработчиков, но, похоже, вы будете счастливее с точки зрения продвижения вперед.

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

1

Если это работает и впечатляет, зачем уступать соблазну переключиться на другую инфраструктуру без причины?Если в нынешней структуре нет негативов (трудно поддерживать, трудно понять, невозможно отлаживать и т. Д.), Я говорю, оставьте это в покое.

Смежные вопросы