В последние месяцы я очень заинтересовался кодированием ката. Я считаю, что это отличный способ отточить свои навыки программирования и улучшить качество кода, который я пишу на работе.
Есть множество мест, где можно найти ката. лайк..
http://schuchert.wikispaces.com/Katas
Я обнаружил, что это отличные хранилища Katas ... мои попытки создать некоторые из них были чрезвычайно полезны.
Однако я чувствую, что у всех Ката, которые я видел до сих пор, есть один недостаток. Ни один из них, похоже, не позволяет мне практиковать рефакторинг плохого кода. Замечательно научиться писать чистый код с первого раза ... но в моей текущей работе у меня не так много возможностей для написания нового кода. Скорее я часто борюсь с устаревшим кодом и пытаюсь понять, как рефакторинг модулей, устранение зависимостей и уменьшение взаимосвязи.
Таким образом, я ищу пару Katas, которые я могу использовать, чтобы отточить свои навыки рефакторинга устаревшего кода и превращения его в чистый код.
Кто-нибудь знает о том, что уже существует? Я знаю, что получаю много практики в этом, пока я на работе ... но я бы хотел отточить свои навыки до такой степени, чтобы я мог быстро увидеть, как разбивать зависимости и разделять проблемы в классах, которые делать слишком много.
источник
Ответы:
Я не знаю сайта, который каталогизирует их напрямую, но одна стратегия, которую я иногда использовал, такова:
Когда вы найдете часть, которая была особенно сложной, бросьте свою работу и повторите ее пару раз, чтобы закрепить свои навыки.
Это не просто практика рефакторинга, но и другие навыки, такие как чтение кода, тестирование и работа с процессами сборки.
Самая сложная проблема - найти проект, которым вы достаточно заинтересованы, чтобы продолжать работать. Последней, над которой я работал, была библиотека Python для генетического программирования, а текущая, над которой я работаю, - это библиотека IRC для Java.
источник
Я чувствую себя некромантом, отвечающим на такую старую беседу, но есть одна вещь, которая могла бы стать достойным дополнением - Legacy Code Retreat .
Идея в том, чтобы сделать отступление по коду с унаследованным кодом и попытаться отработать самые методы работы с ним, но я не вижу ничего, что запретило бы вам просто использовать подготовленный код и практиковаться с ним самостоятельно. Просто используя его для создания Золотого Мастера, вы потратите час работы, и вы можете сделать гораздо больше. Если ваше ката обычно длится около 2 часов, я бы сказал, что если просто разделить то, что обычно происходит на LCR, на ката, вы получите четыре разные вещи, над которыми нужно работать.
Есть репозиторий GitHub от автора идеи, JB Rainsberger, который содержит простую устаревшую систему, с которой вы должны работать, Trivia Game.
Судя по моему опыту как организатору / участнику, людям это очень понравилось, и было интересно увидеть, что может быть проблемой в устаревшем коде и где ваш рефакторинг может сбить вас с пути (и как!). Вот еще один отчет Андреаса Лейдига о том, как это выглядит .
источник
У Эмили Бач есть репозиторий на github с некоторыми катами рефакторинга: Emily Bache Refactoring Kata Repo . Есть варианты KataYahtzee и KataTennis для рефакторинга. Кроме того, у нее есть вариант ката Gilded Rose Kata, который был разработан как ката рефакторинга.
Кроме того, в ее репозитории есть Racing Car Kata : Racing Car Kata . Катамараны гоночных автомобилей также содержат хорошие упражнения для рефакторинга.
Эти ката имеют код на нескольких языках:
источник