Рефакторинг кода на основе тегов ColdFusion 5 в CFC - PullRequest
2 голосов
/ 09 февраля 2009

Я чувствую необходимость реорганизовать мой старый код на основе CF5 в CFC. У нас уже есть некоторый код в ColdSpring и Transfer, но мы чувствуем, что его переписывают в ColdSpring, и Transfer не имеет смысла.

Какие советы, подходы и ошибки я получу.

Как я могу сделать это легко?

Я не против оставить ColdSpring в миксе, но Transfer - это бит, которого я боюсь из-за размера проекта.

edit: моя кодовая база работает уже 7-8 лет и обширна. Описать это было бы сложно, однако я ищу общие предложения по подходам

Ответы [ 6 ]

4 голосов
/ 09 февраля 2009

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

Если вы посмотрите на области вашего сайта, которые 1: наиболее вероятно изменится и 2: выполнено максимально, вы сможете нацелить на некоторые области, которые могли бы извлечь выгоду из изменений, и посмотреть, насколько легко они будут вписываться в CFC на основе рамки, и какие выгоды. Но для большей части кода, если он работает нормально, нет необходимости менять его.

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

3 голосов
/ 09 февраля 2009

Прежде чем что-либо изменить: создайте полный набор регрессионных тестов!

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

Я также согласен с рефакторингом Сергея в стиле волны - это позволяет разбивать вещи на управляемые куски, а не делать все за один раз.

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

3 голосов
/ 09 февраля 2009

В одном из моих текущих проектов (почти такая же ситуация, даже больше - большая часть кода действительно плохая) я использую технику, которую я назвал "волновым стилем". Общие идеи, которые я использую, следующие:

  1. Разделение обработки с выхода. Я не могу реализовать настоящий MVC здесь, но, по крайней мере, я могу переместить представление в отдельные шаблоны (иногда использовать их повторно) и подготовить все данные в базовых (модельных) шаблонах.
  2. Переместите весь повторяющийся код в компоненты - это один из самых важных советов.
  3. Группирует связанные функции в компоненты. Скажем, вся информация о клиентах, сгруппированная в CustomerManager.cfc, счета в InvoiceManager.cfc и т. Д.

Почему "волна"? В большом проекте я не могу просто сидеть и переписывать весь код, связанный с клиентом. Так что я сделал это шаг за шагом. Например, я должен работать над регистрацией клиента, расширить ее с помощью нескольких атрибутов. Я создал базовый компонент, перенес туда методы для проверки формы (проверка логина, электронной почты и т. Д.) И добавления клиента - так что эта страница работает в новом стиле. Позже мне нужно будет улучшить страницу счета-фактуры, где мне нужно получить информацию о владельце счета-фактуры: я просто добавляю метод в менеджер клиентов и избавляюсь от прямых запросов. Позже отредактируйте страницу клиента ... Также ее можно назвать «рефакторинг по требованию» или что-то в этом роде.

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

1 голос
/ 20 февраля 2009

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

1 голос
/ 09 февраля 2009

Я бы посоветовал начать с инкапсуляции вашей бизнес-логики в ХФУ, а не беспокоиться о целом уровне представления вашего сайта.

Просто сконцентрировавшись на бизнес-логике, вы сможете получить наиболее важные функциональные возможности в CFC и облегчить кошмар обслуживания. Также не составит труда вставить эти ХФУ в ваш существующий сайт.

Получив как можно больше бизнес-логики в ХФУ, вы заметите, что огромный монстр был сокращен до размеров. Теперь вы можете решить, что вы хотите делать с уровнем презентации вашего сайта. Теперь вы можете выбирать из множества доступных платформ (CFWheels, FuseBox, ColdBox, Mode-Glue) для переноса через уровень презентации.

Или вы можете просто сказать «черт с ним» и переписать все это в CFWheels с самого начала:)

1 голос
/ 09 февраля 2009

Ответить на этот вопрос чрезвычайно сложно (граничит с невозможным), не зная ни одного вашего кода.

Вопрос немного напоминает: «Я хочу разобрать мой старый Volkswagen и собрать новый из частей, что я должен рассмотреть?» : -)

...