2016-07-18 8 views
0

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

Какие критерии следует использовать для определения того, следует ли реорганизовать блок кода или нет?

Мои догадки:

  • Насколько хорошо тестовое покрытие? Чем больше кода охвачено, тем меньше возможных побочных эффектов рефакторинга.
  • Насколько критичен код? Чем важнее это, тем выше влияние ошибок.
  • Насколько велика прибыль от рефакторинга? Это кажется очень субъективным. Даже в тех случаях, когда причиной является производительность, более медленная версия может быть лучше поддерживаемой или более понятной.

Какие еще аспекты необходимо оценить и есть ли формула или система для определения этого? Я ищу научные или, по крайней мере, систематические подходы.

EDIT: Я думаю, что вопрос немного от того, что я действительно хотел узнать. Скорее: как только вы обнаружили возможный запах кода, как вы определяете приоритеты и обмениваете его? Что делает один рефакторинг более важным/срочным, чем другим?

ответ

1

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

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

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

Если у вас есть много условий if-else, то, возможно, вы должны взять некоторый шаблон состояния/стратегии, чтобы устранить if-else.

Существует действительно много случаев, когда вы должны начать делать рефакторинг, и лучше всего сначала прочитать книгу «Рефакторинг» Мартина Фаулера. В этой книге он охватывает множество ситуаций, и я бы очень рекомендовал его.

+0

Спасибо за понимание. Думаю, я не задал ясного вопроса. Позвольте мне перефразировать это: после того как вы нашли запах кода, как вы решаете, реорганизовать его или нет? Как вы спорите о некотором рефакторинге? Я имею в виду, что в то же время вы могли бы реализовывать функции или фиксировать другие запахи кода. –

+0

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

+0

Спасибо! «... что наиболее важно для решения», как вы знаете, что наиболее важно, когда речь заходит о рефакторинге? –