Refactoring describes a set of low-level techniques and operations which allow developers to simplify and improve the quality of existing code by changing the internal structure of the code.
Continual refactoring is necessary for any project which exists beyond the short term. Without refactoring, code becomes ever more complex as a project evolves and requirements change. Some IT managers will regard refactoring as a risky exercise. If practised correctly we do not believe this to be the case. Used with test driven development, any side effects introduced by refactoring can be identified by running existing tests. Practised continually, individual refactorings are small and hence less of a risk.
We believe that failing to refactor properly can be very risky; code becomes increasingly difficult to keep bug-free, and eventually becomes virtually impossible to maintain. Refactoring is extremely well supported by the Java development tools we use, such as the Eclipse development environment.