Объясняя рефакторинг [закрыто]

Вопрос

Мой вопрос: как вы можете научить методам и важности приведение в порядок и рефакторинг кода?

Фон

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

Я попытался объяснить, как я определял места, где мы могли бы проводить рефакторинг, и как каждый рефакторинг часто выделял новые области. Например, были две переменные, которые хранили одну и ту же информацию - почему? Я догадался, что это обходной путь для более серьезной проблемы, поэтому я вынул одну переменную и погнался за кроликом вниз по течению, обнаружив другие проблемы по мере нашего продвижения. Это в конечном итоге привело к обнаружению проблемы, когда мы повторяли одно и то же несколько раз. Это было связано в немалой степени с использованием массивов размеров магических чисел, которые запутывали то, что было сделано - исправление первоначальной проблемы «двойной переменной» привело к этому открытию (и другим).

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

Я чувствовал, что процесс совместной работы для этого был полезен и для меня (я должен был узнать немного больше о том, как лучше всего объяснить вещи другим), и для моего коллеги (они должны были лучше понять наш код и нашу практику кодирования) но этот опыт заставил меня задуматься, есть ли лучший способ научить процессу рефакторинга.

...и наконец...

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

Ответы на вопрос(9)

Ваш ответ на вопрос