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