2009-07-27 3 views
13

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

ответ

16

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

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

+1

Этого ответа Торарина в: дублирование кода, как правило, наиболее очевидная мишень для рефакторинга так Я бы предложил искать его в первую очередь. –

3

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

+0

Спасибо. Я нашел образец кода по адресу http://david.koontz.name/home/Projects/Entries/2008/4/13_Photo_of_the_Day.html через http://refactoring.com из-за вашего предложения. Я проверю это. – Ball

1

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

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

0

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

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

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

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

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

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

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

Вы также можете использовать такие инструменты, как сонар, которые могут помочь вам определить критические критерии, такие как «цикломатической сложность»

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

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

9

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

  1. Моих книг есть и более короткие примеры и длиннее , на самом деле книжный длинный пример. Код можно скачать бесплатно.
    VB Code Examples
    C# Code Examples

  2. nice example из Refactoring Workbook

  3. Посмотрите на RefactorMyCode

  4. Есть много примеров в интернете простых игр, таких как крестики-нолики или Snake которые имеют много запахов, но достаточно просты, чтобы начать с рефакторинга.

Смежные вопросы