Это "один из десяти" время переписать? - PullRequest
13 голосов
/ 24 августа 2010

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

Текущая ситуация:

  • Я взял на себя обслуживание приложения VB6 / SQL.
  • Общее количество строк кода составляет 75-100 КБ (кодовые компоненты, модули и классы).
  • Первоначальный разработчик ушел, так что это только я, и нет возможности расширить команду, по крайней мере, на несколько лет.
  • Не было никакой архитектуры для программы (только прямые вызовы SQL в виде простого текста в виде выделенных кодов).
  • Не пытается следовать принципам СУХОЙ или ОАОО.
  • База данных имела несколько первичных ключей, но не имела внешних ключей.
  • До того, как эта система была на месте, все управлялось в больших электронных таблицах, поэтому эта система на самом деле является огромным улучшением по сравнению с тем, что у них было, но не выполняет то, что они предусмотрели.
  • Мне удалось написать несколько инструментов для замены всех буквальных экземпляров имен таблиц и имен столбцов константами и поисками, и я написал скрипт быстрого генерации кода для генерации этих констант и поисков из базы данных, поэтому теперь я могу смело вносить изменения в базу данных и видеть везде, что сломалось. Я начал нормализовать базу данных "по краям", но это примерно 3% пути.
  • Нет модульных тестов, поэтому каждый раз, когда я меняю базу данных, мне приходится переписывать любую логику, расположенную поверх нее, и я использую две версии для сравнения функциональности и проверки того, что она одинакова. Пока все хорошо.
  • Я начал с того, что попытался исправить критические ошибки, чтобы остановить кровотечение, и я могу с уверенностью сказать, что это в основном сделано, поэтому сейчас я на секунду отступаю, чтобы посмотреть на общую картину.
  • Руководство поддерживает и оправдывает свои ожидания.
  • Долгосрочная цель в любом случае - преобразовать его в .NET ...

Итак, я взвешиваю следующие варианты:

  1. Продолжайте нормализовать базу данных и вносить изменения в приложение VB6, пока я работаю (в конечном итоге это происходит по частям)
  2. Переведите VB6 в состояние только для обслуживания (без новых функций), выберите один функциональный модуль за раз и переписайте эту часть в .NET поверх нормализованной структуры базы данных.

Я думаю, что если я выберу вариант 1, то в конце у меня просто будет приложение VB6, которое они все еще хотят обновить до .NET, и я посмотрел на это, и это дорого и требует много времени, и даже с инструменты вы все равно получите что-то вроде Франкенштейна. Если я перейду к варианту 2, я думаю, что с этим можно будет покончить быстрее, и я перейду прямо к целевой технологии.

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

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

Итак, это квалифицируется как один из тех "один из десяти" раз или нет?

Ответы [ 11 ]

0 голосов
/ 24 августа 2010

The long-term goal is to convert it to .NET anyway...

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

Убедитесь, что существующее приложение все еще можно использовать, пока вы переписываете, как будто это невозможно сделать в течение дня или двух :) Состояние "только для обслуживания" звучит для меня как хорошая идея.

...