Кто-нибудь порекомендовал бы заново создать НОВЫЕ проекты и повторно добавить исходный код, и почему?

У нас есть большая программная система на основе SQL, которая существует со времен Delphi 1. Она использует одни и те же исходные файлы проекта во всех своих различных проектах. Недавно мы начали обновление до Delphi XE2, и я обдумывал идею создания НОВЫХ файлов проекта и повторного добавления всего исходного кода, чтобы убедиться, что они получают рекомендуемые значения по умолчанию нового Проект Delphi XE2.

Кто-нибудь порекомендовал бы это? И какие риски? Очевидно, это сложная задача - переопределение номера версии, названий проектов / описания / информации о компании и т. Д. Но меня пугает размер исходных проектов. 3 основных исполняемых файла плюс многие другие, что в сумме составляет около 3 миллионов строк кода вместе.

Основная причина, по которой я думаю об этом, заключается в том, что я видел, как новые проекты Delphi XE2 автоматически создают подкаталоги для каждой платформы и выпуска (Win32, Win64, Debug, Release и т. Д.). Наши проекты сейчас в беспорядке, и я пытаюсь его исправить.

Так какие риски в этом заключаются? И почему или почему это не хорошая идея? Может быть какая-нибудь альтернатива "Сбросу" настроек по умолчанию?


person Jerry Dodge    schedule 22.01.2012    source источник
comment
Для меня это не кажется рискованным, за исключением очевидного факта, что вы должны убедиться, что у вас есть одни и те же параметры компилятора до и после. Или, если вы меняете какие-либо параметры компилятора, вы делаете это сознательно. Потратьте немного времени на это и убедитесь, что вы хорошо используете функции конфигураций сборки и наборов параметров. Сначала поэкспериментируйте с ними, чтобы точно знать, как они работают.   -  person David Heffernan    schedule 23.01.2012
comment
То, что они существуют с D1, неплохо. Множество приложений было переведено через версии за эти годы. Какую версию использовали эти приложения в последний раз? Чем больше скачок версий, тем с большим количеством проблем вы столкнетесь. Один из вариантов - загрузить приложение в XE2 и нажать Ctrl O + O. Скопируйте вставленные директивы компилятора в отдельный файл, а затем воплотите идею своего нового проекта. Снова выполните Ctrl O + O, скопируйте директивы в новый файл и затем сравните файлы. Таким образом будет легче обнаружить любое изменение в директивах.   -  person Mike W    schedule 23.01.2012


Ответы (3)


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

Наши проекты сейчас в беспорядке, и я пытаюсь его исправить.

Любой, кто участвовал в большом проекте, вероятно, в какой-то момент так думает. Если где-то действительно есть "беспорядок", то он в исходных файлах проекта (PAS, DFM), а не в самом файле проекта. При рефакторинге, вероятно, должно быть наоборот. Реорганизуйте исходные файлы (при необходимости), удалите файлы, избыточность которых доказана, и файл проекта немедленно отразит новую обнаруженную чистоту.

Очевидно, что переопределение номера версии, названия проекта / описания / информации о компании и т. Д. - сложная задача.

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

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

Основная причина, по которой я думаю об этом, заключается в том, что я видел, как новые проекты Delphi XE2 автоматически создают подкаталоги для каждой платформы и выпуска (Win32, Win64, Debug, Release и т. Д.)

Для этого не нужно повторно создавать файл проекта, просто измените Output Directory и Unit Output Directory в параметрах компилятора вашего проекта на следующее:

.\$(Platform)\$(Config)
person Cosmin Prund    schedule 23.01.2012
comment
+1. Настроить эти параметры проекта совсем не сложно, по сравнению с написанием 3 миллионов строк кода и поддержанием их более 15 лет. - person GolezTrol; 23.01.2012
comment
+1, чтобы увидеть список всех используемых единиц в вашем проекте, см. как-я-найти-все-единицы-в-моем-delphi-приложении - person LU RD; 23.01.2012

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

Фактически, мы недавно столкнулись именно с этим. Избегая предыстории почему это было сделано, один из моих коллег создал новый проект и повторно добавил все модули текущего (устаревшего) проекта. После перестройки новый исполняемый файл выдавал нарушения доступа, а затем выводил на экран диалоговое окно, в котором он не мог найти причину своего доступа.

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

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

person afrazier    schedule 23.01.2012

Хотя это не должно повредить, я не уверен, что вы многого добьетесь.

Усилия и время, потраченные на такую ​​идею, кажутся надуманным проектом, и я не вижу в этом пользы.

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

person Warren P    schedule 24.01.2012
comment
Лично я думаю, что мой ответ имел больше смысла до вашего редактирования. - person Warren P; 24.01.2012