Definition

refactoring

Refactoring is "the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure," according to Martin Fowler, the "father" of refactoring. The concept of refactoring covers practically any revision or cleaning up of source code, but Fowler consolidated many best practices from across the software development industry into a specific list of "refactorings" and described methods to implement them in his book, Refactoring: Improving the Design of Existing Code. While refactoring can be applied to any programming language, the majority of refactoring current tools have been developed for the Java language.

One approach to refactoring is to improve the structure of source code at one point and then extend the same changes systematically to all applicable references throughout the program. The result is to make the code more efficient, scalable, maintainable or reusable, without actually changing any functions of the program itself. In his book, Fowler describes a methodology for cleaning up code while minimizing the chance of introducing new bugs.

In January 2001, automated refactoring tools began to appear in earnest, including the IntelliJ IDEA Java IDE (Integrated Development Environment), the X-ref plug-in tool for the Emacs editor and the Instantiations jFactor stand-alone refactoring tool. Many basic editing environments support simple refactorings like renaming a function or variable across an entire code base. Most current refactoring-capable tools support Extract Method and Inline Method at minimum, but support for more complex but useful refactorings like Extract Interface and Extract Superclass is still not common, though available.

Eric Raymond, a leading philosopher about program development, maintains that the concept of refactoring is consistent with the idea of get-something-working-now-and-perfect-it-later approach long familiar to Unix and open source programmers and hackers. The idea is also embodied in the approach known as extreme programming.

This was last updated in January 2006
Posted by: Margaret Rouse

Email Alerts

Register now to receive SearchSOA.com-related news, tips and more, delivered to your inbox.
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

More News and Tutorials

  • Q&A: Messaging middleware with Apache projects

    In this Q&A, Rob Davies discusses messaging middleware and the hurdles that many developers face as they first approach the subject. Davis is CTO of FuseSource and coauthor of the book "ActiveMQ in Action."

  • SOA, semantics and services combine in DoD intelligence sharing effort

    Using textual analytics and natural language processing, Modus Operandi developed a service that analyzes and parses unstructured data and pulls out events or information. Article includes tips on SOA and semantics, SOA and data models, and an SOA recipe for stone soup.Among highlights: Recognize that not everything can be or should be shared.

  • An SOA practices checklist for implementation roadmaps

    This article provides a master list of common practices, field proven by a number of SOA projects. Also supplied is a template that can be used as a checklist for developing SOA implementation roadmaps specific to an organization's transition project requirements.

Do you have something to add to this definition? Let us know.

Send your comments to techterms@whatis.com

There are Comments. Add yours.

 
TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: