Показать сообщение отдельно
Старый 26.10.2010, 17:12   #11  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,712 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Во-вторых (и это главное) в результате переименования появились объекты с дублирующимися названиями (одинаковые таблицы, одинаковые поля, одинаковые формы).
В подобных случаях, думаю, логичнее префикс превратить в суффикс. Кроме того, как уже упоминалось, если имена совпадают - это повод пересмотреть логику использования объектов. Думаю, можно сделать такой сценарий:

1. Если удаление префикса не приводит к дублированию имен, то удаляем префикс
2. Если удаление префикса приводит к дублированию имен, то
2.1. Переносим префикс в конец имени делая из него суффикс
2.2. Сообщаем пользователю о возникшей коллизии, чтобы он пересмотре логику использования данного объекта

============================

Вообще-то, насколько я понимаю, в самом общем виде задача ставится так:

как переименовать объект, чтобы все ссылки на него также переименовались.

Как мне кажется, в общем случае, полностью автоматическими средствами этого не сделать. Далеко не все ссылки на объект можно изменить автоматически. Например, в коде метода. Т.е., в общем случае, часть ссылок будет переименована автоматически, но останется некая часть, которую придется выискивать и переименовывать вручную. Вопрос только в пропорциях.

Лично я сделал бы следующее:

1) Перекрестные ссылки. Где используется объект.
2) Поиск по тексту внутри методов на случай, например, прямых SQL-запросов к серверу или обращение через _args.caller()
3) Дополнительный Job для поиска по свойствам, которые не учитываются в перекрестных ссылках и не могут быть найдены по тексту метода или средствами стандартного поиска (не знаю, FormRef, например, стандартный поиск найдет?)

Фиксирую все найденные места использования. Переименовываю объект и повторяю цикл для нового имени. Далее сравниваю полученные списки использования и вручную корректирую те места, где "автомат" не справился.

==========================

Возможно, лучшей стратегией было бы дать умереть таким объектам своей смертью. Т.е. создавать новые объекты и переливать в них данные из старых.
За это сообщение автора поблагодарили: mazzy (2).