Чем рефакторинг отличается от переписывания? Где граница между двумя этими процессами?
Интересует само понятие рефакторинга.
Не понятно, что означает в определении "без изменения функциональности". Если я придумал новую архитектуру (например она была на функциях, а я придумал на классах), на имеющиеся фичи - это уже можно назвать переписыванием? Или так-как результат работы заново написанной программы остаётся прежним, то это всё-равно рефакторинг?