Думаю, много полезнее был бы развитый анализ происхождения значение переменных и выражений и развитый трейсинг выполнения. В сущности, дебаггер обычно запускают для того, чтобы узнать, откуда берётся то или иное значение.
Приведённый в статье инструментарий в принципе достаточен, чтоб, хоть и по хитрозакрученным методикам, но сделать подобную вещь.
There’s Never Time to Do It Right, But There’s Always Time to Do It Over
Первое — расплывчато, второе — легче обосновывается объективно наличествующей крайней необходимостью (с регулярностью граблей постоянно откуда-то возникающей, несмотря на то, что её теоретически не должно быть).
Помнится, как в дни проведения «Русских маршей» устраивали профилактические работы на Livejournal, как зимой тоже очень вовремя экскаваторщики в Москве случайно порвали оптический кабель, через который направлялся весть трафик к Гуглу… Русское ноу-хау: (управляемое) своевременное раздолбайство.
Два лучше всего полуавтоматически рефакторящихся языка — это Java и C#. Основная польза от рефакторинга — возможность менеджить «в одну харю» в десять раз больше кода.
Не знаю, как с динамичностью типизации в Ruby, но Javascript из-за динамического и «утиного» характера типизации должен рефакториться сильно хуже.
Именно ручной рефакторинг, на мой взгляд, — это или хардкор или чисто академическая вещь или малое по объёму (но не по трате усилий) дополнение к полуавтоматическому.
Приведённый в статье инструментарий в принципе достаточен, чтоб, хоть и по хитрозакрученным методикам, но сделать подобную вещь.
Не знаю, как с динамичностью типизации в Ruby, но Javascript из-за динамического и «утиного» характера типизации должен рефакториться сильно хуже.
Именно ручной рефакторинг, на мой взгляд, — это или хардкор или чисто академическая вещь или малое по объёму (но не по трате усилий) дополнение к полуавтоматическому.