такой необычный запрос: ищу примеры программ до и после рефакторинга. Типа, вот некрасивая, плохая программа; а вот она же, но после рефакторинга, хорошая и красивая. Желательно, что бы примеры не совсем короткие, хотя бы пару килобайт кода. Если у кого есть такое или ссылки на такое — поделитесь, плз. Заранее спасибо.
Здравствуйте, 0x7be, Вы писали:
0>Коллеги,
0>такой необычный запрос: ищу примеры программ до и после рефакторинга. Типа, вот некрасивая, плохая программа; а вот она же, но после рефакторинга, хорошая и красивая.
Здравствуйте, kmmbvnr, Вы писали:
K>Здравствуйте, 0x7be, Вы писали:
0>>Коллеги,
0>>такой необычный запрос: ищу примеры программ до и после рефакторинга. Типа, вот некрасивая, плохая программа; а вот она же, но после рефакторинга, хорошая и красивая.
K>Как вариант — http://kmmbvnr.livejournal.com/17360.html
И где здесь "после рефакторинга, хорошая и красивая"? Код как был плохим, так и остался. (Я хотел порезче выразиться, но потом заметил, что это твой код .)
Здравствуйте, 0x7be, Вы писали:
0>такой необычный запрос: ищу примеры программ до и после рефакторинга. Типа, вот некрасивая, плохая программа; а вот она же, но после рефакторинга, хорошая и красивая. Желательно, что бы примеры не совсем короткие, хотя бы пару килобайт кода. Если у кого есть такое или ссылки на такое — поделитесь, плз. Заранее спасибо.
Так не бывает. Рефакторят обычно класс, метод. Можно посмотреть на deprecated методы, классы разных библиотек. Часто вместо них предлагается что-то отрефакторенное.
K>>Как вариант — http://kmmbvnr.livejournal.com/17360.html
U>И где здесь "после рефакторинга, хорошая и красивая"? Код как был плохим, так и остался. (Я хотел порезче выразиться, но потом заметил, что это твой код .)
Надо не резче выражаться, а конкретнее. Там решена основная задача — большая сопля кода, превращена в набор локальных проблем. Что-то не так с появившемся интерфейсом?
-- Главное про деструктор копирования не забыть --
Здравствуйте, 0x7be, Вы писали:
0>Коллеги,
0>такой необычный запрос: ищу примеры программ до и после рефакторинга. Типа, вот некрасивая, плохая программа; а вот она же, но после рефакторинга, хорошая и красивая. Желательно, что бы примеры не совсем короткие, хотя бы пару килобайт кода. Если у кого есть такое или ссылки на такое — поделитесь, плз. Заранее спасибо.
Ну вот, к примеру, была такая библиотека С++ Boost.Spirit (построитель парсеров), и у нее внутри лежала библиотечка Phoenix (эмуляция лямбда-функций, в основном для использования в качестве semantic actions в Spirit).
Обе эти библиотеки использовали нетривиальную ленивую перегрузку операторов на всю катушку (техника под названием Expression templates).
Потом еще появилась библиотека Boost.Xpressive, для собирания регулярных выражений во время компиляции, с использованием тех же самых техник.
После чего автор Xpressive Eric Niebler покумекал и применил рефакторинг Extract Library (по аналогии с Extract Method).
В результате его усилий появилась библиотека Boost.Proto для построения DSEL в С++, после чего все три библиотеки (Spirit, Phoenix, Xpressive) выкинули свои старые потроха и стали базироваться на Proto, причем Phoenix из всопогательной библиотеки стала полноценной библиотекой первого уровня и фактически отправила на свалку старые библиотеки Boost.Bind и Boost.Lambda.
Ну и писать свои DSL в С++ теперь одно удовольствие по сравнению с тем, что было раньше (Expression templates в рукопашную). www.boost.org/libs/proto
Вот такой пример немаленького успешного рефакторинга.