Кодирование Katas для практики рефакторинга унаследованного кода - PullRequest
117 голосов
/ 16 сентября 2009

В последние месяцы я очень заинтересовался кодированием катов. Я считаю, что это отличный способ отточить мои навыки программирования и улучшить качество кода, который я пишу на работе.

Есть множество мест, где можно найти катас. как ..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

Я обнаружил, что это отличные хранилища Катаса ... мои попытки в некоторых из них были чрезвычайно полезными.

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

Таким образом, я ищу пару Katas, которые я могу использовать, чтобы отточить свои навыки рефакторинга унаследованного кода и превращения его в чистый код.

Кто-нибудь знает что-нибудь, что уже существует? Я знаю, что я получаю много практики, пока я на работе ... но я хотел бы отточить свои навыки до такой степени, чтобы я мог быстро увидеть, как разбить зависимости и отдельные проблемы в классах, которые делай слишком много.

Ответы [ 3 ]

86 голосов
/ 25 сентября 2009

Я не знаю сайта, который каталогизирует их напрямую, но одна стратегия, которую я иногда использовал, это:

  1. Найти старый, маленький, необслуживаемый проект с открытым исходным кодом на sourceforge
  2. Загрузите его, получите для компиляции / сборки / запуска
  3. Прочтите документацию, прочувствуйте код
  4. Используйте методы Эффективная работа с устаревшим кодом , чтобы получить его тестируемый фрагмент
  5. Рефакторинг этой части, возможно, исправление ошибок и добавление функций по пути
  6. Повторите шаги с 4 по 6

Когда вы найдете деталь, которая была особенно сложной, отбросьте свою работу и повторите ее пару раз, чтобы укрепить свои навыки.

Это не только практика рефакторинга, но и другие навыки, такие как чтение кода, тестирование и работа с процессами сборки.

Самой сложной проблемой является поиск проекта, в котором вы достаточно заинтересованы, чтобы продолжать работать. Последним, над которым я работал, была библиотека python для генетического программирования, а текущим, над которым я работаю, является библиотека IRC для Java.

18 голосов
/ 09 февраля 2013

Я чувствую, что некромант отвечает на такую ​​старую ветку, но есть одна вещь, которая сделает достойное дополнение - Legacy Code Retreat .

Идея состоит в том, чтобы иметь Code Retreat с унаследованным кодом и попытаться применить на практике те же самые методы для решения таких проблем, но я не вижу ничего, что могло бы запретить вам просто использовать подготовленный и практический код с этим самостоятельно. Простое использование его для создания Golden Master делает для вас час работы, и вы можете сделать гораздо больше. Если ваше ката обычно длится около 2 часов, я бы сказал, просто разделив то, что обычно происходит в LCR, на ката, и вы получите четыре разные вещи для работы.

Существует GitHub-репозиторий от автора идеи Дж.Б. Рейнсбергера, который содержит простую унаследованную систему, с которой вам предстоит работать, Trivia Game.

Из моего опыта работы в качестве организатора / участника людям это очень понравилось, и было очень интересно увидеть, что может быть проблемой в унаследованном коде и куда ваш рефакторинг может сбить вас с пути (и как!). Вот еще один рассказ о том, как это выглядит, Андреас Лейдиг .

17 голосов
/ 12 октября 2013

Эмили Бач имеет репозиторий github с некоторыми рефакторинг-катами: Рефакторинг Эмили Бах Репо-ката Существуют варианты KataYahtzee и KataTennis для рефакторинга. Кроме того, у нее есть вариант позолоченной розы ката, которая была разработана как рефакторинг ката.

Кроме того, в ее репозитории есть Гоночная машина Катас: Гоночная машина Ката . Race Car Katas также содержит хорошие упражнения для рефакторинга.

Эти ката имеют код на нескольких языках:

  • C ++
  • C #
  • Java
  • Javascript
  • Python
  • рубин
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...