Code refactoring is the process of restructuring existing computer code – changing the
factoring – without changing its external behavior. Refactoring improves
nonfunctional attributes of the
software. Advantages include improved code
readability and reduced
complexity; these can improve
source code maintainability and create a more expressive internal
architecture or
object model to improve
extensibility. Typically, refactoring applies a series of standardised basic
micro-refactorings, each of which is (usually) a tiny change in a
computer program's source code that either preserves the behaviour of the software, or at least does not modify its conformance to
functional requirements. Many
development environments provide automated support for performing the mechanical aspects of these basic refactorings. If done extremely well, code refactoring may also resolve hidden, dormant, or undiscovered
computer bugs or vulnerabilities in the system by simplifying the underlying logic and eliminating unnecessary levels of complexity. If done poorly it may fail the requirement that external functionality not be changed, and/or introduce new bugs.