10 000 строчек проще рефакторить или переписать?

Получил бэк на express с не просто ужасным, а просто кошмарным кодом. Я ума не приложу какими божьими силами он в принципе работает. Чтобы было понятней, методы там занимают по 100, а то и 200 строчек, которые можно сократить до 30. Но это пол беды, встречается и такое, что 3 метода делают одно и тоже, и отличаются в ~5-10 строках. Документация полностью не соответствует тому, что возвращают роуты. Когда я первый раз запустил проект, веб шторм мне выкинул 200 варнингов на файл с 1к строчками кода.
Что с этим всем делать?

Чтобы более глубоко проникнуть в него с головой, приведу вам маленький фрагмент кода.
if (user !== undefined) {
   user = undefined 
} else {
   user = undefined
}
  • Вопрос задан
  • 810 просмотров
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Обычно код такого качества проще переписать. Есть и дополнительные плюсы:
- вы в деталях поймёте, как работает проект и что делает;
- вы, вероятно, найдёте и исправите какие-то баги по дороге.

Но это индивидуально, вообще. Кому-то проще инкрементально рефакторить, лично мне проще в такой ситуации писать с нуля, ориентируясь на имеющийся код, но критически его оценивая.
Это и от размеров проекта ещё зависит, от общей его сложности, от нагрузки на разработчиков (можно ли остановить активную разработку на какое-то время). 10k строк, в принципе, не очень большой размер.
Ответ написан
Комментировать
@Kirill-Gorelov
С ума с IT
Тут зависит от ситуации с работодателем.
Если он готов это все оплачивать, а именно с нуля, то конечно же с чистого листа.
А если не готов, я бы даже не трогал это.

Когда мне попадается ужас даже на 1% от твоего объема и если это никому кроме меня не нужно, то я не трогаю....
Это конечно сугубо мое мнение...
Увы, денежные отношения они такие.
Ответ написан
solotony
@solotony
покоряю пик Балмера
Смотря что дальше делать с кодом. Если внести пару мелких правок - то вообще не трогать. А если задача долго развивать этот проект ... я бы переписал. По крайней мере когда я столкнулся с подобной задачей - я стал писать с "0" сделав надстройку над исходнымм.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@acwartz
Тут должна быть ваша реклама.
Я думаю в данном случае рефакторинг и есть перепись проекта.
Ответ написан
Комментировать
@vshvydky
Отличие в нескольких строчках кода и отсутствие разделения на слои может говорить о двух вещах.
Первая, быстрые хотелки в изменениях проекта и скорость с которой его писали. Второе, уровень разработчика. Увы из практики ревью проектов на ноде, могу сказать что как минимум каждый второй проект это велосипед.
Ответ написан
Комментировать
SerzN1
@SerzN1
Challenge me!
И однозначный ответ на вопрос - нет, если только не стоит прямая задача на рефакторинг.

Поскольку это обычная вещь как недооценить сложность + возможно эта система работает в продакшене и люди работают с ней.

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

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

Я бы рекомендовал постепенные улучшения и декомпозицию. Говнокод в 1 месте, новые и отрефакторенные модули в другом.

Если критерии по доступности системы никому не интересны, то можно просто фигачить свой код как считаете нужным пока есть бюджет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы