сделать плохой код хорошим - PullRequest
       13

сделать плохой код хорошим

1 голос
/ 10 октября 2008

Я прочитал статью о том, как заменить существующий плохой код на хороший. Для справки это ссылка на статью http://www.javaworld.com/jw-03-2001/jw-0323-badcode.html?page=1

Широко говорилось о следующем

  • Добавить комментарий

  • Код рефакторинга

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

Кажется, хорошо. Есть ли в этом списке какие-либо дополнения, с которыми вы, возможно, сталкивались?

Ответы [ 7 ]

9 голосов
/ 10 октября 2008

Перед выполнением любого рефакторинга убедитесь, что у вас есть набор регрессионных тестов, которые вы можете запустить в коде. Бесполезно проводить рефакторинг своей кодовой базы, если затем вы вводите тысячи ошибок регрессии из-за отсутствия небольшого нюанса того, что на самом деле делал исходный «плохой» код (и упускающего его в рефакторинге).

3 голосов
/ 10 октября 2008

Мартин Фаулер написал отличную книгу по рефакторингу.

Вот каталог рефакторингов из книги.

3 голосов
/ 10 октября 2008

Что касается комментариев, рекомендуется использовать JavaDocs. Это как строительная документация в коде.

1 голос
/ 13 октября 2008

Убедитесь, что у вас есть полный набор регрессионных тестов!

Хватай FindBugs, PMD и т. Д. И начинай смотреть на то, что они говорят. Я склонен считать, что классы, которые сообщают о большинстве ошибок Findbugs, имеют много проблем и являются хорошим местом для начала процесса рефакторинга.

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

Стоит всегда обращать внимание на такого рода инструменты, они очень помогут вам, если вы научитесь понимать, что они говорят вам.

Также обратите внимание на предупреждения вашей IDE, они есть по причине.

  • Я не связан ни с одним из этих провайдеров инструментов (даже если они бесплатны), однако я часто их использую и очень впечатлен ими!
1 голос
/ 10 октября 2008

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

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

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

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

1 голос
/ 10 октября 2008

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

0 голосов
/ 14 октября 2008

Спросите себя, почему вы делаете рефакторинг кода. Нужно ли трогать код? Хрупкий код легко сломать, улучшив его.

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

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

Если вы реорганизуете код по соображениям производительности, следите за улучшениями алгоритма. Если вы можете изменить алгоритм O (n ^ 2) на O (n log (n)) в секции кода hot , это может сделать для вашего кода гораздо больше, чем любое количество других небольших изменений. .

...