Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизРефакторинг проекта. Что посоветуете использовать? Найти похожие ветки
← →
Карелин Артем © (2006-03-11 09:55) [0]Значится есть у меня проект на Д5. Сотня модулей, 50К строк чиста кода.
Хочу разгрести это дело и привести к более удобному виду.
Для начала привести к одному стандарту названия классов, методов и свойств, параметров и т.д. В идеале нужен рефакторинг как в VS 2005 Enterprise.
Что посоветуете для этого.
Был бы на студии 2005 проект - проблем бы не было.
← →
Lamer@fools.ua © (2006-03-11 12:23) [1]BDS2006
← →
Sergey Masloff (2006-03-11 12:58) [2]В меню Search & Replace ;-)
По совокупности трудоемкость меньше будет а эффект больше.
← →
iZEN © (2006-03-11 13:24) [3]Sergey Masloff (11.03.06 12:58) [2],
рефакторинг не ограничивается Search & Replace, хотя для начала сойдёт.
Но именно для начала, которого хочет автор темы.
← →
Карелин Артем © (2006-03-11 13:31) [4]Sergey Masloff (11.03.06 12:58) [2]
LOL!!!!!!!!!!!!!!!!!!!!!!!!!!
1) Все-таки модуль не один и даже не 10. Класс может быть продекларирован в одном модуле, а использоваться скажем в 60 модулях.
2) Если мне надо к примеру поменять название или параметры метода Write у одного конкретного класса, не вызовет ли предложенный способ изменение ВСЕХ строчек программы, содержащих Write???
Огромная просьба не предлагать такие решения в данной ветке!
← →
Sergey Masloff (2006-03-11 14:42) [5]Карелин Артем © (11.03.06 13:31) [4]
Артем, уверяю Вас я рекомендуемый мной метод УСПЕШНО применял при рефакторинге проектов ЗНАЧИТЕЛЬНО больших по объему чем приводимый в исходном топике. Как минимум использование его даст возможность просмотреть глазами места где рефакторингуемый элемент встречается и просто выбросить ненужные устаревшие и так далее. Что в свою очередь позволит значительно сократить число проходов.
← →
Суслик © (2006-03-11 14:47) [6]поддержу Сергея.
у меня проект 1млн строк, иногда занимаюсь рефакторингом.
У дельфи есть большое достоинство - он быстро компилирует.
Что тебе мешает - поправить название метода и начать build?
Сразу узнаешь, где что нужно править.
Зачастую действтиельно можно поиском.
← →
Nic © (2006-03-11 14:48) [7]По-моему, 50 Кб кода - это не так уж много, чтобы искать специализированные средства рефакторинга. ИМХО.
← →
Nic © (2006-03-11 15:02) [8]А вот сотня модулей на 50Кб кода - это многовато =о|
← →
antonn © (2006-03-11 15:13) [9]Nic © (11.03.06 15:02) [8]
А вот сотня модулей на 50Кб кода
50000 строк
← →
Nic © (2006-03-11 15:16) [10]Надо же, ляп какой :) Спать мне надо больше.
← →
API © (2006-03-11 15:34) [11]Карелин Артем © (11.03.06 09:55)
Класс может быть продекларирован в одном модуле, а использоваться скажем в 60 модулях.
Search ->Find in files -> Search all files in project
Если мне надо к примеру поменять название или параметры метода Write у одного конкретного класса, не вызовет ли предложенный способ изменение ВСЕХ строчек программы, содержащих Write???
Поменять название в 100 местах? Без проблем, максимум 5-10 минут "вручную".
Добавить параметр? Если "до того" Вам параметр был не нужен, и тут вдруг понадобился, то: или вводите новый метод, или перегружайте, или используйет параметр по умолчанию.
Удалить параметр? Снова тех же 5-10 минут.
Да и не всякий код можно автоматически отрефакторить.
Вот, сегодня сам исправлял в некоторых местах по проекту (кстати, размер одного порядка - ~62 000 строк) метод CreateService() на дополнительно написанный RequestService(). Дело в том, что CreateService() мог возвращать nil, и поэтому результат надо проверять на неравенство. В одних местах эта проверка через ASSERT, в других - условие. Ну и добавил я метод RequestService(), в котором вызывался CreateService(), а затем результат проверялся, а, в случае nil, вызывалось исключение. Но менять CreateService() на RequestService() везде "автоматом", по понятным причинам, не получится. Сделал вручную, где не надо - убрал лишний ASSERT(), несколько локальных указателей. 20 минут - зато уверен, что код "подчищен", и никаких лишних проверок нет, да и методы вызываются в каждом месте - нужные.
Обратите внимание - искал бы средства для рефакторинга - до сих пор сидел бы со старым кодом. А потом, когда нашел - не справился бы с задачей "автоматически" - пришлось бы все равно руками подправлять.
Скажете - долго и нудно? Ну так заранее думать, проектировать нужно. (У меня вот, был однажды аврал - не подумал - теперь вот подправлял).
Да и прежде, чем "рефакторить", подумать - нужен ли этот рефакторинг?
А то можно так нарефакториться, что потом сам черт ногу сломит.
Огромная просьба не предлагать такие решения в данной ветке!
Я не знаю, что у Вас там за проект. Но, думаю, Вы бы уже давно вручную его отрефакторили, вместо того, чтобы жаловаться на форуме на тяжелую судьбу. "Кто хочет сделать - ищет способ, а кто не хочет - причину."
То есть, все просто - вручную сегодня или автоматом через неделю. Смотрю, Вам по душе второй путь.
Ну что ж, удачи в любом случае! :)
← →
kaZaNoVa © (2006-03-11 17:18) [12]а для чего нужен этот самый рефакторинг?)
← →
API © (2006-03-11 17:57) [13]а для чего нужен этот самый рефакторинг?)
В трех словах, рефакторинг - улучшение существующего кода.
Подробности - по адресу: http://www.google.com
← →
kaZaNoVa © (2006-03-11 18:06) [14]API © (11.03.06 17:57) [13]
а может .. того? что работает - то и трогать не надо, дабы не испортить ...
← →
API © (2006-03-11 18:14) [15]что работает - то и трогать не надо, дабы не испортить ...
Можно и так. :)
Но если проект писал кто-то другой, да еще и "на коленке", а Вам его сопровождать и наращивать надо, то без рефакторинга трудновато будет.
← →
kaZaNoVa © (2006-03-11 20:59) [16]а если исходника ваще нет?))
← →
wicked © (2006-03-11 21:22) [17]по сабжу:
кидайте в меня тапками, но я использую рефакторинг "для бедных"....
суть проста: меняются имена и/или сигнатуры "причёсываемых" обьектов, будь то классы, методы или простые функции..... причем, если меняется реализация некоторого обьекта (вместе с параметрами), то и меняется его имя, поскольку имя должно отражать действия, производимые методом.... запускаем make проекта и компилятор сам нам укажет места, где нужно изменить исходник.... процесс повторяем итеративно до получения удовлетворительных результатов.... в сочетании с системой контроля версий (svn) занятие это не очень трудное и хлопотное....
> kaZaNoVa © (11.03.06 20:59) [16]
> а если исходника ваще нет?))
тогда и разговоры такие не ведутся....
← →
Джо © (2006-03-11 22:00) [18]> [16] kaZaNoVa © (11.03.06 20:59)
> а если исходника ваще нет?))
Нет ножек — нет конфеток (с) :p
← →
Карелин Артем © (2006-03-11 22:24) [19]Народ, поймите меня правильно. Недавно пришлось чуть поправить - изменить одну часто используемую глобальную переменную. Название, тип.
Я руками это сделал аналогично wicked © (11.03.06 21:22) [17].
Эта переменная встретилась примерно в 300 местах. А рефакторить надо много...
← →
Джо © (2006-03-11 22:26) [20]> [19] Карелин Артем © (11.03.06 22:24)
> Эта переменная встретилась примерно в 300 местах. А рефакторить
> надо много...
Ну, надеюсь, ты ее убрал? :)
> А рефакторить надо много...
Ну, из стандартного уже подсказали, BDS 3 или 4. Других средств, заточенных под Делфи, я не использовал. Кажется, ModelMaker есть такое.
← →
Игорь Шевченко © (2006-03-13 13:18) [21]Стандартный инструмент для рефакторинга - руки + тесты. Все остальное от лукавого. Доверяя инструментам в BDS теряешь самое главное - степень понимания кода.
← →
pasha_golub © (2006-03-13 16:50) [22]Я постоянно Search & Replace пользуюсь, чесслово. Да, иногда долго бывает. Зато точно знаю где и что менялось. И в случае непоняток, знаю, что это я накосячил, а не какой-нибудь рефакторер.
← →
Джо © (2006-03-13 16:51) [23]А я уж привык к Rename method, просто без него, как без рук :)
← →
Джо © (2006-03-13 16:53) [24]> [23] Джо © (13.03.06 16:51)
Т.е., хотел сказать просто "Refactor/Rename...".
← →
Карелин Артем © (2006-03-13 21:13) [25]
> Игорь Шевченко © (13.03.06 13:18) [21]
А это.... Как его????
Во! Голова!!!! И мозга!!!
Не нужны чё-ли???
← →
Игорь Шевченко © (2006-03-14 10:44) [26]Карелин Артем © (13.03.06 21:13) [25]
> Голова!!!! И мозга!!!
>
> Не нужны чё-ли???
Нет конечно. А зачем они в процессе рефакторинга ?
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.056 c