рефакторинг
От: Valodzka Беларусь  
Дата: 09.01.06 00:52
Оценка:
Долго думал на каком форуме спросить...

Часто стало попадаться слово "рефакторинг". Ссылка вроде все ясно обясняет
http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3

Но...
Что значит автоматический рефакторинг и поддержка IDE рефакторинга?
Не перебивайте меня, когда я вас перебиваю
Re: рефакторинг
От: TS_Rus Россия http://gendix.ru
Дата: 09.01.06 01:53
Оценка:
Здравствуйте, Valodzka, Вы писали:

V>Долго думал на каком форуме спросить...


V>Часто стало попадаться слово "рефакторинг". Ссылка вроде все ясно обясняет

V>http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3

V>Но...

V>Что значит автоматический рефакторинг и поддержка IDE рефакторинга?

Автоматический? Ну есть например простой рефакторинг "выделение метода".
Переносит код в отдельный метод в том же классе.
Фаулер в своём каталоге описывает подробно по этапам как это делать (зависимости выявить, параметрами сделать и т.д.).
А вот например в VS 2005 для этого выделяешь нужный кусок кода, потом меню Refactor — Extract Method, она у тебя только спросит как новый метод назвать — и всё. Готово, все нелокальные переменные для фрагмента передались параметрами и/или возвращаемым значением, короче рабочий код.
Ясно, что это и так несложно, но с поддержкой на уровне IDE — это ровно 3 секунды занимает.
Задай вопрос и получи ответ в реальном времени по ICQ/Skype &c. Регистрация в темах: «Программирование», «Интернет», «Компьютеры»: [a]http://asklive.ru/ThemeSubscribeForm.aspx?attachGroups=963-962-961">[a]
Re: рефакторинг
От: FenoMin Украина  
Дата: 10.01.06 06:52
Оценка:
Здравствуйте, Valodzka, Вы писали:
V>Долго думал на каком форуме спросить...
V>Часто стало попадаться слово "рефакторинг". Ссылка вроде все ясно обясняет
V>http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3
V>Но...
V>Что значит автоматический рефакторинг и поддержка IDE рефакторинга?

-----------------
Как ты наверное успел заметить, существуют разные методы для рефакторинга кода. Вот некоторые из них:
— "выделение класса"
— "перемещение поля"
— "перемещение метода
— "переименование метода"
— "изменение колличества параметров"
— ... и др. (читай Мартина Фаулера).
Так вот: существуют специально встроенные в IDE (програмную оболочку) функции в виде специального плагина, которые помогают наполовину автоматизировать процесс рефакторинга. Короче, парситься твой код, определяються объекты и их методы, и в графическом режиме даёться возможность изменять структуру кода. Вещь полезная, конечно, но некоторые (я в том числе) предпочитают ручное изменение кода — это более надёжно..
Что ещё рассказать?... Если что, спрашивай — поможем
check your autority
Re[2]: рефакторинг
От: WolfHound  
Дата: 10.01.06 07:02
Оценка: 1 (1) +1
Здравствуйте, FenoMin, Вы писали:

FM>Вещь полезная, конечно, но некоторые (я в том числе) предпочитают ручное изменение кода — это более надёжно..

Сколько пользовался ReSharper'ом ни разу проблем небыло.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: рефакторинг
От: FenoMin Украина  
Дата: 10.01.06 19:45
Оценка: -1
Дело вкуса, WolfHound. Дело вкуса...
check your autority
Re[4]: рефакторинг
От: NotGonnaGetUs  
Дата: 25.02.06 09:42
Оценка:
Здравствуйте, FenoMin, Вы писали:

FM>Дело вкуса, WolfHound. Дело вкуса...


Мне кажется, рефакторинг давно перестал быть делом вкуса. По крайней мере в среде java программистов.

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

Другое дело, что в ряде языков рефакторинг в принципе не может быть проведён автоматически...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: рефакторинг
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 25.02.06 09:52
Оценка:
Здравствуйте, Valodzka, Вы писали:

V>Долго думал на каком форуме спросить...


V>Часто стало попадаться слово "рефакторинг". Ссылка вроде все ясно обясняет

V>http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3

V>Но...

V>Что значит автоматический рефакторинг и поддержка IDE рефакторинга?

По поводу рефакторинга есть хороший анекдот, ещё советских времён:

Американцы спёрли полутораметровую пачку документации на новейший советский истребитель. Собрались, стали повторять. Повторили — получился паровоз. Разобрали. Повторили ещё раз. Опять паровоз. Что делать? Решили украсть специалиста. Сказано — сделано. Пришёл специалист.
— Так... ну, давайте вашу документацию?
— Вот, вся здесь!
— Как — вся? Это же базовый вариант! К нему же ещё три вагона изменений и дополнений!

Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: рефакторинг
От: VladGalkin Украина  
Дата: 25.02.06 14:19
Оценка: 21 (1) +1
Здравствуйте, FenoMin, Вы писали:

FM>- ... и др. (читай Мартина Фаулера).

FM>возможность изменять структуру кода. Вещь полезная, конечно, но некоторые (я в том числе) предпочитают ручное изменение кода — это более надёжно..

ИМХО: Надежнее, как раз наооборот.

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


Дон Робертс и Джон Брант

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


Кент Бек
... << RSDN@Home 1.1.4 stable rev. 510>>
ДЭ!
Re: рефакторинг
От: VladGalkin Украина  
Дата: 25.02.06 14:34
Оценка:
Здравствуйте, Valodzka, Вы писали:

V>Но...

V>Что значит автоматический рефакторинг и поддержка IDE рефакторинга?

Ну вот например в 14 главе Фаулера, Робертс и Брант пишут, что такое инструментальные средства проведения рефакторинга.

Основная задача инструмента рефакторинга — позволить программисту производить рефакторинг кода без обязательного повторного тестирования программы.

Основные технические критерии для инструментов рефакторинга:
Возможность поиска программных объектов по всей программе. Например: нахождение всех вызовов некоторого метода, что приводит к применению семантического анализа и хранению исходного кода в форме, пригодной для такого анализа, поиска и обновления
(Smalltalk среды, Eclipse, хотя в Smalltalk конечно покруче ).
Деревья синтаксического разбора — при необходимости рефакторинга частей системы, находящихся ниже уровня метода, необходима структура данных, представляющая внутреннюю структуру методов.
Требование точности: выполняемые IDE рефакторинги должны в достаточной мере сохранять поведение программ.

К практическим критериям относятся: скорость, отмена модификаций, интеграция с другими инструментами. Также очень сущестенно, насколько рефакторинг соотносится с культурой самого языка.
... << RSDN@Home 1.1.4 stable rev. 510>>
ДЭ!
Re[2]: рефакторинг
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.02.06 15:21
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>

ГВ>Американцы спёрли полутораметровую пачку документации на новейший советский истребитель. Собрались, стали повторять. Повторили — получился паровоз. Разобрали. Повторили ещё раз. Опять паровоз. Что делать? Решили украсть специалиста. Сказано — сделано. Пришёл специалист.
ГВ>- Так... ну, давайте вашу документацию?
ГВ>- Вот, вся здесь!
ГВ>- Как — вся? Это же базовый вариант! К нему же ещё три вагона изменений и дополнений!


В оригинале (который слышал я лет 15 назад) была подлодка, никого ни крали, а сдались, и версих анекдота было две. Одна интелегентская (та что поведал ты), а вторая рабочекрестьянсткая. По-моему вторая была смешнее. А звучала она так:

Американцы спёрли пачку документации на новую сикретную подлодку. Решили воспроизвести. Сколько не бились получается паравоз. Так замучались, что решили сдаться. Сидят значит в КГБ и говорят:
— Ладно, сдаемся, только разсскажите как вы по этим чертежам подлодки умудряетесь строить?!
— Эх, балваны! Внизу же черным по белому написано "до готовности довести напильником"!

... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: рефакторинг
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 25.02.06 19:34
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В оригинале (который слышал я лет 15 назад) [...]


На самом деле, этих вариантов было до ё....й страсти — и танк в коляску переделывали.

Всё равно суть не меняется — очень напоминает ситуацию с неразумным применением рефакторинга.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: рефакторинг
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.02.06 20:54
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Всё равно суть не меняется — очень напоминает ситуацию с неразумным применением рефакторинга.


Чесно говоря связи с рефаторингом не улавливаю. Анегдот был про русское раздолбайство.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.