Review: Refactoring: Improving the Design of Existing Code

Ready to take your programming skills to the next level?  One of the most important things you can learn is Refactoring.

Refactoring – Improving a computer program by reorganizing its internal structure without altering its external behavior. (Dictionary.com)

Simply put it’s the act of improving your code continually to improve design, and performance, when adding new features. Refactoring helps you keep your code maintainable and easy to read. Too often programs become cluttered with code placed here and there for new features.  Often the original design was not implemented with these features in mind and can make it cumbersome.

To that end Martin Fowler has created a book, Refactoring: Improving the Design of Existing Code that is collection of tips on things you can do when refactoring.  Nicely done he has added to front and back inside covers a list of shortcuts to common areas that frequent cases.  Not only did he think about how to refactor your code, but he refactored his book to help improve your performance in finding the information you need.

Whether it’s advice on creating factory methods, introducing foreign methods, or creating type classes, these topics are covered, with step by step directions on how to perform the refactoring.  This is really excellent for the novice programmer, for the more experience programmer often the example will show you enough that you can quickly perform the refactoring.

I see only two things which you should take note on.  This book hasn’t been updated since 1999.  It would be wonderful to see a newer version come out, updated with the capabilities of Java.  Secondly it’s very much geared toward Java, it would be nice to see a more language neutral version come forth.  It’s a must read for new Java programmers and it is a should read for more experienced Java Programmers, as fresh ideas is what keeps our coding fresh.

So I give this book 4 of 5 Yodas

YodaYodaYodaYoda

Ghostprogrammer
  • Ghostprogrammer
  • I am known for being able to quickly decipher difficult problems to assist development teams in producing a solution. I have been called upon to be the Team Lead for multiple large-scale projects. I have a keen interest in learning new technologies, always ready for a new challenge.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: