Автоматический? Ну есть например простой рефакторинг "выделение метода".
Переносит код в отдельный метод в том же классе.
Фаулер в своём каталоге описывает подробно по этапам как это делать (зависимости выявить, параметрами сделать и т.д.).
А вот например в VS 2005 для этого выделяешь нужный кусок кода, потом меню Refactor — Extract Method, она у тебя только спросит как новый метод назвать — и всё. Готово, все нелокальные переменные для фрагмента передались параметрами и/или возвращаемым значением, короче рабочий код.
Ясно, что это и так несложно, но с поддержкой на уровне IDE — это ровно 3 секунды занимает.
-----------------
Как ты наверное успел заметить, существуют разные методы для рефакторинга кода. Вот некоторые из них:
— "выделение класса"
— "перемещение поля"
— "перемещение метода
— "переименование метода"
— "изменение колличества параметров"
— ... и др. (читай Мартина Фаулера).
Так вот: существуют специально встроенные в IDE (програмную оболочку) функции в виде специального плагина, которые помогают наполовину автоматизировать процесс рефакторинга. Короче, парситься твой код, определяються объекты и их методы, и в графическом режиме даёться возможность изменять структуру кода. Вещь полезная, конечно, но некоторые (я в том числе) предпочитают ручное изменение кода — это более надёжно..
Что ещё рассказать?... Если что, спрашивай — поможем
Здравствуйте, FenoMin, Вы писали:
FM>Вещь полезная, конечно, но некоторые (я в том числе) предпочитают ручное изменение кода — это более надёжно..
Сколько пользовался ReSharper'ом ни разу проблем небыло.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, FenoMin, Вы писали:
FM>Дело вкуса, WolfHound. Дело вкуса...
Мне кажется, рефакторинг давно перестал быть делом вкуса. По крайней мере в среде java программистов.
Инлайн временных переменных, выделение новых перменых, выделение методов, изменение сигнатур методов — руками это быстро не сделать. Более того работа руками не будет надежнее автоматических рефакторингов из-за необходимости выполнять достаточное больше количество рутинных операций и, кроме того, "откатить" рефакторинг в случае ручного исполнения далеко не простая задача.
Другое дело, что в ряде языков рефакторинг в принципе не может быть проведён автоматически...
По поводу рефакторинга есть хороший анекдот, ещё советских времён:
Американцы спёрли полутораметровую пачку документации на новейший советский истребитель. Собрались, стали повторять. Повторили — получился паровоз. Разобрали. Повторили ещё раз. Опять паровоз. Что делать? Решили украсть специалиста. Сказано — сделано. Пришёл специалист.
— Так... ну, давайте вашу документацию?
— Вот, вся здесь!
— Как — вся? Это же базовый вариант! К нему же ещё три вагона изменений и дополнений!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, FenoMin, Вы писали:
FM>- ... и др. (читай Мартина Фаулера). FM>возможность изменять структуру кода. Вещь полезная, конечно, но некоторые (я в том числе) предпочитают ручное изменение кода — это более надёжно..
ИМХО: Надежнее, как раз наооборот.
Даже при наличии страховки в виде комплекта тестов рефакторинг, производимый вручную, требует больших затрат времени. Это простое обстоятельство удерживает программистов от рефакторинга, необходимость которого им понятна, лишь потому, что обходится он слишком дорого.
Дон Робертс и Джон Брант
Броузер рефакторинга полностью изменяет представления о программировании. Всякием мелкие соображения типа "конечно, следовало бы поменять это имя, но..." уходят в прошлое, вы просто изменяете это имя, поскольку для этого нужно лишь выбрать пункт в меню.
Здравствуйте, Valodzka, Вы писали:
V>Но... V>Что значит автоматический рефакторинг и поддержка IDE рефакторинга?
Ну вот например в 14 главе Фаулера, Робертс и Брант пишут, что такое инструментальные средства проведения рефакторинга.
Основная задача инструмента рефакторинга — позволить программисту производить рефакторинг кода без обязательного повторного тестирования программы.
Основные технические критерии для инструментов рефакторинга:
Возможность поиска программных объектов по всей программе. Например: нахождение всех вызовов некоторого метода, что приводит к применению семантического анализа и хранению исходного кода в форме, пригодной для такого анализа, поиска и обновления
(Smalltalk среды, Eclipse, хотя в Smalltalk конечно покруче ).
Деревья синтаксического разбора — при необходимости рефакторинга частей системы, находящихся ниже уровня метода, необходима структура данных, представляющая внутреннюю структуру методов.
Требование точности: выполняемые IDE рефакторинги должны в достаточной мере сохранять поведение программ.
К практическим критериям относятся: скорость, отмена модификаций, интеграция с другими инструментами. Также очень сущестенно, насколько рефакторинг соотносится с культурой самого языка.
ГВ>Американцы спёрли полутораметровую пачку документации на новейший советский истребитель. Собрались, стали повторять. Повторили — получился паровоз. Разобрали. Повторили ещё раз. Опять паровоз. Что делать? Решили украсть специалиста. Сказано — сделано. Пришёл специалист.
ГВ>- Так... ну, давайте вашу документацию?
ГВ>- Вот, вся здесь!
ГВ>- Как — вся? Это же базовый вариант! К нему же ещё три вагона изменений и дополнений!
В оригинале (который слышал я лет 15 назад) была подлодка, никого ни крали, а сдались, и версих анекдота было две. Одна интелегентская (та что поведал ты), а вторая рабочекрестьянсткая. По-моему вторая была смешнее. А звучала она так:
Американцы спёрли пачку документации на новую сикретную подлодку. Решили воспроизвести. Сколько не бились получается паравоз. Так замучались, что решили сдаться. Сидят значит в КГБ и говорят:
— Ладно, сдаемся, только разсскажите как вы по этим чертежам подлодки умудряетесь строить?!
— Эх, балваны! Внизу же черным по белому написано "до готовности довести напильником"!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>В оригинале (который слышал я лет 15 назад) [...]
На самом деле, этих вариантов было до ё....й страсти — и танк в коляску переделывали.
Всё равно суть не меняется — очень напоминает ситуацию с неразумным применением рефакторинга.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!