Refactoring is the mechanism by which a codebase is cleaned up by development teams or the internal layout of a piece of software is modified to enhance it. Refactoring is designed to have no visible effect on the end of the user, but will make it easier for development teams to continue working on the code and to incorporate new functionality in the future.