Кодирование Катаса для практики рефакторинга устаревшего кода

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

Существует множество мест, где можно найти ката. как..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Там репозиторий GitHub автор идеи, J.B. Rainsberger, который содержит простую унаследованную систему, с которой вы должны работать, Trivia Game.

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

Ответ 3

У Эмили Баше есть репозиторий github с некоторыми рефакторингами: Эмили Баш Рефакторинг Ката Репо. Для рефакторинга есть варианты KataYahtzee и KataTennis. Кроме того, у нее есть вариант Gilded Rose Kata, который был разработан как рефакторинг ката.

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

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

  • С++
  • С#
  • Java
  • Javascript
  • Python
  • рубин