Что вы считаете перед рефакторингом кода?
У меня есть приложение, которое только что отправлено. С тех пор как я написал это, я узнал об amfphp и propel. И то, и другое было бы неплохо использовать в приложении, но я не могу сказать, что это будет необходимо на данном этапе.
Какие типы вещей вы рассматриваете перед рефакторингом кода?
9 ответов
Нужно ли мне?
Просто потому, что я могу рефакторинг кода, не означает, что я должен рефакторинг кода. Во многих случаях есть гораздо более важные вещи, которые необходимо сделать. Нравится исправление дефектов.
Теперь, если мы говорим о рефакторинге кода, потому что я уже нахожусь в этом конкретном блоке кода и работаю над ним как часть устранения дефекта или обслуживания кода, это совсем другая история. Но рефакторинг только ради рефакторинга? Это звучит как занятая работа, рожденная от скуки. Конечно, у вас нет пустого списка дефектов.
Проведите модульные тесты, чтобы проверить код после рефакторинга.
Требуемое усилие по сравнению с полученной выгодой и где оно в приоритетном порядке соответствует другой работе.
Насколько вероятно, что я нарушу существующую функциональность? Модульные тесты являются отличной защитной сеткой здесь, как и инструменты автоматического рефакторинга.
Будет ли код действительно легче понимать и поддерживать после этого? На этот вопрос может быть сложно ответить, и для того, чтобы лучше на него ответить, требуется опыт.
Насколько ремонтопригодным будет реорганизованный код. Задним числом является 20/20, но с поставленным продуктом элегантный, но загадочный дизайн может быть кошмаром для поддержания. Кроме того, очень важна гибкость в переработанном дизайне, позволяющая усовершенствовать функции.
Я нюхаю код. Если мне не нравится запах (другими словами, он не пахнет, как я), то я мочусь по всему, пока он мне не понравится.
Поскольку программным технологиям нужны классные имена, такие как Agile или Design Patterns, я называю это Canine Refactoring.
После переписывания кода я некоторое время использую его, съедая свою собачью еду.
Я должен дать +1 Дрейцу. Единственная причина, по которой не стоит проводить рефакторинг, - это если у вас нет юнит-тестов. Но даже это не означает, что вы не должны рефакторинг. Я должен сказать, что мой modus operandus - это сначала функциональность кода, а затем всегда рефакторинг для решения проблем дизайна. Повторите тошноту.
"Достаточно хороший" шаблон, вероятно, является наиболее используемой методологией программирования на земле, и это одна из причин, по которой наше программное обеспечение глючит и не работает. Вместо того, чтобы выбирать "путь" с наименьшей энергией, мы всегда выбираем "шаг" с наименьшей энергией.
Но будьте осторожны! Рефакторинг без надлежащих инструментов (и это будет зависеть от языка и IDE) - это все равно, что вбить винт: вы можете попасть туда, но это будет неэффективно (и у вас могут возникнуть проблемы).
Модульный тест был бы очень хорош, но если код не охватывается модульными тестами, у вас должны быть какие-то другие средства, чтобы гарантировать, что вы не нарушите код. Если у вас есть возможность получить копию производственных баз данных, возможно, даже какой-нибудь живой ввод, у вас должен быть хороший шанс.
В первоначальном проекте мы фактически записали все входящие данные за 14 дней и сохранили снимок prod db в начале и конце этих 14 дней, а затем мы смогли сравнить состояние базы данных, используя старый код и новый код., Но модульные тесты наверняка уберут часть страха:-)
Создайте форк для текущей базы производственного кода в вашем контроле исходного кода и выполните весь рефакторинг в экспериментальной ветке исходного контроля.