Хорошие примеры при обучении рефакторингу?

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

Ответы

Ответ 1

Я бы на самом деле предлагал рефакторинг некоторого кода вашего и вашего коллеги.

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

Ответ 2

Вот некоторые коды, как оригинальная, так и рефакторинговая версия, поэтому вы можете подготовить свою ката или просто сравнить результаты после выполнения рефакторинга:

Ответ 3

Первая глава в Martin Fowler "Рефакторинг" является хорошей отправной точкой для рефакторинга. Я понял большинство концепций, когда один из моих учителей в школе использовал этот пример.

Ответ 4

Каков общий уровень знаний ваших коллег?

Что-то основное, как дублирование кода, должно быть легко обернуть головы. Два фрагмента (почти) идентичного кода, которые могут быть реорганизованы в метод повторного использования, класс, что угодно. Использование (прошлое) примера из вашей собственной базы кода было бы хорошим.

Ответ 6

Я бы рекомендовал вам разработать простой пример проекта для конкретного требования.

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

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

В качестве примера можно использовать компьютер, клавиатуру и класс принтера. Добавьте такие требования, как, вы будете хотеть, чтобы компьютер читал с мыши, тогда еще одно требование может быть похоже на то, что ваш компьютер захочет сохранить его на жестком диске, чем печать. Наконец, ваш реорганизованный код должен выглядеть так: ваш компьютерный класс должен зависеть от класса абстрактных классов ввода и класса устройства вывода. И ваш класс клавиатуры должен наследовать класс Inputdevice.

Ответ 7

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

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

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

Вы также можете использовать инструменты, такие как сонар, которые могут помочь вам определить критические критерии, такие как "Cyclomatic Complexity"

http://www.sonarsource.org/managing-cyclomatic-complexity-to-increase-maintainability/

Вы просите их написать код самостоятельно и проверить, как инструмент выполняет рефакторинг. Кроме того, вы можете писать код в eclipse, и есть опция, которая делает рефакторинг для вас... enter image description here