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


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

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

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

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

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

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

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

3 109

3 ответа:

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

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

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

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

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

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

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

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

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

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

кроме того, у нее есть гоночный автомобиль Katas в ее РЕПО:Гоночный Автомобиль Ката. В гоночном автомобиле Katas также есть хорошие упражнения для рефакторинга.

эти ката имеют код в нескольких langauages:

  • C++
  • C#
  • Java
  • Javascript
  • Python
  • Рубин