2009-09-16 1 views
102

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

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

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

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

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

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

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

+0

+1 хороший вопрос, с полезной информацией При условии – KLE

+0

Желаю, чтобы я мог дать больше, чем +1 :) Отличный вопрос. Я даже не думал о такой практике программирования ... – TJMonk15

+0

Я бы ЛЮБЛЮ, чтобы увидеть, как кто-то действительно отправляет небольшую систему специально для рефакторинга устаревшего кода ... то, что имеет части, в которых будут светиться рефакторинги Майкла Перса. Я искал что-то вроде этой формы, чем через неделю. кто угодно? кто угодно? :) –

ответ

79

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

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

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

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

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

+3

+1 очень интересное предложение. Как вы сказали, сложная задача - найти подходящий проект. Я дам этому много внимания. Возможно, если я или другие найду некоторые, которые очень полезны, его можно было бы сохранить и задокументировать где-то как Kata ... – mezoid

+2

«Работа с устаревшим кодом» - вы имеете в виду «Эффективно работать с устаревшим кодом»? http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052 – TrueWill

+0

Да, я имею в виду «Эффективная работа с устаревшим кодом». Спасибо за улов! – Ryan

18

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

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

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

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

15

Emily Bache имеет хранилище github с некоторыми рефакторинговыми катарами: Emily Bache's Refactoring Kata Repo. Для рефакторинга есть варианты KataYahtzee и KataTennis. Кроме того, у нее есть вариант Gilded Rose Kata, который был разработан как рефакторинг ката.

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

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

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

Эмили также опубликовала книгу «Кодирование Dojo Handbook», в которой перечислены Katas, и описывается, как начинать и запускать свои собственные кодовые dojos. Я очень рекомендую книгу: https://leanpub.com/codingdojohandbook –

+0

Я использовал ее книгу для запуска dojos, и я согласен, что это отличный ресурс. У Эмили есть связанный с этим курс по адресу pluralsight.com/courses/the-coding-dojo. –