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


123

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

Є численні місця, де можна знайти Катас. подібно до..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

Я вважав, що вони є чудовими сховищами катасів ... мої спроби деяких із них були надзвичайно корисними.

Однак я відчуваю, що всі ката, які я бачив до цього часу, мають один короткий час. Здається, жодна з них не дозволяє мені займатися рефакторингом поганого коду. Чудово навчитися писати чистий код вперше ... але в моїй теперішній роботі я не маю занадто багато можливостей написати новий код. Я, швидше, борюся проти застарілого коду і намагаюся розібратися, як переробляти модулі, усунути залежності та зменшити зв'язок.

Як такий, я розглядаю пару катас, які я можу використовувати, щоб відточити свої навички рефакторингу застарілого коду та перетворення його на чистий код.

Хтось знає, що вже існує? Я знаю, що я отримую багато практики в цьому, поки я на роботі ... але я хотів би відточити свої навички до того, що я зможу швидко зрозуміти, як розбити залежність і розділити проблеми в класах, які робити занадто багато.


+1 приємне запитання з корисною інформацією
KLE

Я хотів би, щоб я міг дати більше, ніж +1 :) Чудове запитання. Я ніколи навіть не замислювався над такою практикою програмування ...
FallenAvatar

Я хотів би бачити, як хтось насправді публікує невелику систему, спеціально для рефакторингу застарілого коду ... щось, що має частини, де світиться переробництво Майкла Пір'я. Я шукав щось подібне вже більше тижня. хтось? хтось? :)
Дерік Бейлі

Приємне запитання. Ви можете практикувати те, про що згадував @Ryan у своїй відповіді. Я пропоную роздрібнити сховище giithub: github.com/garora/TDD-Katas Ви можете увійти в історію та перевірити, як ці катаси відновлюються.
Gaurav Aroraa

Відповіді:


92

Я не знаю про сайт, який безпосередньо каталогізує їх, але одна з стратегій, яку я використовував при нагоді, це така:

  1. Знайдіть старий, маленький, незбережений проект з відкритим кодом на sourceforge
  2. Завантажте його, отримайте його для компіляції / побудови / запуску
  3. Прочитайте документацію, відчуйте код
  4. Використовуйте методи ефективної роботи зі застарілим кодом щоб отримати частину цього тесту
  5. Рефактор цей фрагмент, можливо, виправлення помилок та додавання функцій по дорозі
  6. Повторіть кроки 4 - 6

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

Це не просто практика рефакторингу, але й інші навички, такі як читання коду, тестування та робота з процесами збирання.

Найскладнішою проблемою є пошук проекту, який вам достатньо цікавий, щоб продовжувати працювати. Останній, над яким я працював, - це бібліотека пітонів для генетичного програмування, а поточний, над яким я працюю, - це бібліотека IRC для Java.


4
+1 дуже цікава пропозиція. Як ви сказали, хитра річ - це знайти відповідний проект. Я буду приділяти цьому багато уваги. Можливо, якщо я, або інші, знайду якісь дуже корисні, їх можна було б зберегти і задокументувати десь як Ката ...
mezoid

3
"Робота зі спадковим кодом" - ви маєте на увазі "Ефективна робота зі спадковим кодом"? amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…
TrueWill

1
Так, я маю на увазі «Ефективна робота зі спадковим кодом». Дякую за улов!
Райан

21

Мені здається, що некромант відповідає на таку стару нитку, але є одна річ, яка зробить гідним доповненням - Legacy Code Retreat .

Ідея полягає в тому, щоб мати Code Retreat із застарілим кодом і спробувати практикувати самі методи поводження з таким, але я не бачу нічого, що заборонило б вам просто використовувати код, підготовлений і практикуючи його самостійно. Просто використання його для створення Золотого Майстра робить за годину роботи, і ви можете зробити набагато більше. Якщо ваша ката зазвичай триває близько двох годин, я б сказав, що лише розділивши те, що зазвичай відбувається на LCR, на ката, ви можете працювати над чотирма різними речами.

Там є сховище GitHub від автора ідеї Дж. Б. Райнсбергер, яке містить просту спадщину систему, з якою ви маєте працювати, Trivia Game.

З мого досвіду як організатора / учасника, людям це дуже сподобалось, і це було освітленням, щоб побачити, що може бути проблемою у застарілому коді та де ваше рефакторинг може звести вас з збитків (і як!). Ось ще один розповідь про те, як це виглядає, від Андреаса Лейдіга .


20

Емілі Бейш має сховище github з деякими катафакторами рефакторингу: Каталізатор Емілі Баш Рефакторинг Ката Репо . Існують варіанти KataYahtzee і KataTennis для рефактора. Також у неї є варіант позолоченої троянди Ката, який був розроблений як ката рефакторингу.

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

Ці ката мають код у кількох мовах:

  • C ++
  • C #
  • Java
  • Javascript
  • Пітон
  • Рубін

4
Емілі також опублікувала книгу "Довідник з кодування доджо", в якій перераховані катаси та описано, як запустити та запустити власні доджоси кодування. Я дуже рекомендую книгу: leanpub.com/codingdojohandbook
Крістіан Маслен

1
Я використав її книгу, щоб запустити доджо, і я згоден, що це чудовий ресурс. Емілі також має відповідний курс на pluralsight.com/courses/the-coding-dojo.
Стів Клентон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.