Top reasons to refactor

  • Business requirements
  • Make things testable
  • Maintainability
  • Scalability
  • Learn something new

As long as there is some measurable and deliverable improvement in business value, it is a good reason to refactor. If it does not provide any business value, it cannot be justified.