Amazon.com Customer Reviews
excellent guide to application of patterns to real world code - Review written on December 04, 2006
Rating: 5 out of 5
2 customers found this review helpful.
This book is an important contribution to the design patterns library, particularly for practicing programmers as opposed to theoreticians. Most of the design books that we read deal with patterns in a vacuum, constructing toy examples which demonstrate the pattern at hand but have little in common with the kinds of software contexts that we are likely to encounter as serious programmers. Typically we are not designing systems from scratch; normally there is some combination of new and legacy code that must be made to cooperate in some coherent way, and we may perceive that some pattern would be desirable, but executing the transformation of the existing systems to express that pattern will typically involves significant risk of regression. That is a central focus of this book: how to break up this transformation into sequences of safe re-factorings.
Another important theme of the book is that the application of patterns typically entails various trade-offs. A well-known pattern may better communicate the relationships and responsibilities of the various software components we are working with, but on the other hand the pattern may introduce extra complexity if the problem being solved is amenable to some simple and minimal approach. Using the approaches of this book it is possible to introduce patterns if needed later in the development cycle, and in many cases it may turn out that the patterns are in fact not needed. In these situations, the lengthy application of patterns upfront would have been a premature optimization.
And this brings me to the last point that I want to make about this book: its content is strongly based on real world experience, and presented in a way which fits what we need as real world engineers. I thought it was interesting to see a negative review of this book where the complaint was that the author was talking about his own experiences too much. The relating of the theory presented to actual past problems solved is one of the most valuable aspects of the book, in my opinion.
A book of minimal value - Review written on August 03, 2006
Rating: 1 out of 5
12 customers found this review helpful, 13 did not.
What a disappointment! The book deals with a key element of software development but unfortunately lets the reader down in so many ways! While the topics covered should have been useful, I suspect that the most common word in the book was "I" - as the author regales the use with instances where his apparently superior and hothouse intellect saved the day. Instead, a concise but generalised explanation would have done and been illustrative.
Similarly, the book is filled with torturous language and passages absolutely berefit of meaning; for example pg 107 "Now it's time to reflect on how simple TagBuilder is and how easy it is for clients to use. Is there a simpler way to produce XML? This is not the kind of question you can answer right away. Experiments and hours, days, or weeks of reflection can sometimes yield a simpler idea. I'll discuss a simpler implementation in the Variations section below. For now, I move on to the last step. " on page 111 we finally got to the above mentioned Variations section in the interim 40+ references to "I" and "WE".
Finally, the author appears so in love with refactoring and artistic code that I really believed he exceeded good practice and drove towards refactoring to the infinitely useless. Several scattered recomendations to constrain class size to 10 lines of code and recommendations on how do so completed the picture for me. Too many flowers and not enough Vulcan warriors would be a good summary.
Last year, I led a large team in succesfully completing 40 Million Euro of software. (Yes, the sale value as sold to the customers) and commercially, i am not sure I would have a place in my team for such a polarised thinker.
Excellent book for experienced programmers - Review written on May 21, 2006
Rating: 4 out of 5
3 customers found this review helpful, 1 did not.
The book discusses how you can refactor your existing code using design patterns. Unlike many other pattern books it doesn't limit itself to the famous GoF patterns, also includes other less known ones.
It has a clear structure, which is followed for all patterns: 1) shows the original design, 2) shows the target design, 3) gives background on the pattern discussed with pros and cons, 4) step-by-step takes you through the refactoring process.
I find it very informative and use it as reference frequently.
The only reason I'm not giving 5 stars is that the examples are sometimes complex ones, which are hard to follow in the way they are presented. Prefer to read more self-contained sort of books where you can understand the topic without additional supporting material (like code downloads). It would be better if the book showed the complete refactored code at the end of each pattern, to give the full picture.
I recommend it for experienced programmers, who are already familiar with patterns because the book's main focus is rather the refactoring process than the introduction to the basics of patterns.
Good detailed explanation on great concept - Review written on February 16, 2006
Rating: 5 out of 5
3 customers found this review not to be helpful.
Patterns Refactoring -- Perhaps the most important concepts in nowaday software development on complicated business platform. It's especially useful on the projects with critical design time phase in which the pattern design and refactor can be implemented on post-development phase. The Factory, Singleton, Adapter, Bridge, Decorator, Facade, Observer, Command, Template, Strategy, Mediator and State pattern are obviously purposed for elegant and well-maintainable technical design.
Great Concepts and Must-Read - Review written on January 21, 2006
Rating: 5 out of 5
4 customers found this review helpful, 2 did not.
This book is one of my latest favorites although I picked from my work library..this book really a concepts guru. The author justifies why you need this book exploring what a typical developer do... right from the "Over Engineering", Patterns Panacea, Under Engineering...and finally justifing "Continous Refactoring". If you are developers, who realize patterns based approach then it is a must read. As a patterns fan, I chose to read this book after my favorite patterns collection GoF, Head first patterns, Core J2EE patterns, Core Security Patterns, Enterprise Integration Patterns ....and it truly made a difference so that I don't do over-engineering and under-engineering with my patterns.
Finally a design pattern book for us, mortals.... - Review written on October 14, 2005
Rating: 3 out of 5
3 customers found this review helpful, 3 did not.
Design pattern concepts can be rather abstract at times, and the absence of code samples can make some of these concepts even harder to visualize. In this book, the author does an excellent job of applying design pattern concepts to code refactoring, thereby helping illustrate such an abstract subject. The contents of the book are thoughtfully structured such that the reader can focus on a specific pattern or specific refactoring problem,instead of reading through the chapters sequentially. I found the UML diagrams especially helpful, since they clearly delineated the design before and after, refactoring. However, the book falls short in terms of utilizing some of the coding samples, as the author tries to step though each code sample and loses the reader in the process. These exercises would have been a lot more fruitful and lucid had there been source code for the designs, before and after refactoring.
A must-have book for software developers, but... - Review written on October 12, 2005
Rating: 2 out of 5
10 customers found this review helpful, 4 did not.
This is a very good reference/utility book for any software designer, developer, maintainer... Unlike the traditional design pattern books, which talk about how to apply various design patterns under various situations, this book focus more on how to find badly designed and implemented code and apply simple yet effective patterns to make the existing code better. The author starts with listing some common problems in the existing code, such as conditonal complexity, long method, etc. He goes on by suggesting some possible solutions to the problems, such as using a strategy pattern to reduce conditional complexity, etc. He uses some very good examples and shows the detail steps involving in the refactoring process.
This book deserves "*****" if the complete source code before and after refactoring is available. Without the complete source code, it takes much more time and effort in trying to understand what is involved in the refactoring process.
Superb - Review written on June 25, 2005
Rating: 5 out of 5
5 customers found this review helpful, 1 did not.
This is probably the best technical book I read that was published in 2004. If you are struggling to see how you can apply patterns in your day-to-day work, this book will help.
Most development work is done with existing code bases. It is less likely that you will have a chance to design something from scratch using design patterns that you are aware of. So this book helps you move toward a code base that is better designed in refactorings that lead to common design patterns.
The author suggests that many systems are now "over-engineered" due to the popularity of design patterns. I have not had the opportunity to work on such a system, but the book was still very relevant.
The code examples are actually very realistic and detailed, which I appreciated. Some readers may find them too complex and distracting from the refactoring steps, but I thought they strengthened the book.
I read the book in the order suggested by the author to those who want to study the patterns. It worked very well and the code examples carried thoughtfully from one refactoring to the next.
Examples are in Java but if you are using any OO language you will likely be able to follow them.
Many technical books are filled with typos and grammatical errors. This book was obviously well edited and not rushed out the door to publish.
Well written, easy to read, and genuinely useful - Review written on January 06, 2005
Rating: 5 out of 5
10 customers found this review helpful, 3 did not.
Refactoring To Patterns brings together the Patterns movement, and the practice of Refactoring commonplace in the Agile community. Whereas the original Gang of Four book told us what patterns were, what sort of problems they solved, and how the code might be structured, Refactoring To Patterns illustrates how, why and when to introduce patterns into an existing codebase.
The opening chapters cover the background, introducing both refactoring and design patterns, and the context in which the book was written. This gives the reader a clear overview of what is involved in Refactoring to Patterns, and paves the way for the refactoring catalogue which makes up the bulk of the book.
The catalogue is divided into chapters based on the type of change required --- is this a refactoring to simplify code, generalize code, or increase encapsulation and protection? Each chapter has an introduction which gives an overview of the refactorings contained within that chapter, followed by the refactorings themselves. These introductions clearly illustrate the principles and choices which would lead one to follow the refactorings that follow.
Each refactoring starts with a brief one sentence summary, and before and after structure diagrams with reference to the structure diagrams for the relevant pattern in the Design Patterns book. The sections that follow then cover the Motivation for using this refactoring, step-by-step Mechanics, and a worked Example, relating back to the steps given for the Mechanics. Finally, some of the refactorings finish with Variations on the same theme. The examples are all pulled from a small sample of projects, which are introduced at the beginning of the catalogue section, and help illuminate the instructions given in the Mechanics section. The mechanics themselves are generally clear, and broken down into small steps --- sometimes smaller steps than I might take in practice, but I think this is probably wise, as large steps can easily confuse. Finally, the Motivation sections do a good job of explaining why one would choose to do a particular refactoring, and any pitfalls to doing so --- the "Benefits and Liabilities" tables provide a useful summary.
This book is well written, easy to read, and genuinely useful. It has helped me put some of the refactorings I do into a larger context, and given me insight into how I can integrate patterns with existing code, rather than designing them in up front. As John Brant and Don Roberts highlight in their Afterword, this is a book to study, the real benefit comes not from knowing the mechanics, but by understanding the motivation, and the process, so that one may apply the same thinking to other scenarios not covered by this book. If you are serious about software development, buy this book, inwardly digest it, and keep it by your side.
Highly Recommended.
nice sequel to Fowler's Refactoring - Review written on October 21, 2004
Rating: 5 out of 5
11 customers found this review helpful, 2 did not.
This is a recent book in Martin Fowler's series of computing texts. The series begins with his classic Refactoring text. Now Kerievsky takes us into a sequel. Because you can imagine this as a suitable extension of the previous book. Where now the author has us look for patterns during the refactoring process. The style of the book closely follows Fowler's book. And, like that book, the code examples are in Java.
But what if you program in C++ or C#? If you are experienced enough, you should be able to apply many of these ideas in your language. The examples are meant to give flesh to general patterns. And the patterns should be able to be implemented in any object oriented language.
Actually, if you have already been looking for patterns, or designing to them, then much of this book may be no surprise. Because one virtue of the book is that it binds together a set of commonly encountered refactorings. But even in this case, a few hours reading may be profitable for you, if it just exposes you to a few hitherto unfamiliar patterns.
A High Quality Reference for Agile Developers - Review written on October 06, 2004
Rating: 5 out of 5
8 customers found this review helpful, 1 did not.
A high quality reference for those that want to gain some direction to their refactoring. That's what Joshua Kerievsky has managed to create with this book. This book assumes that you already know about refactoring and even states clearly that this book is best read with Martin Fowler's "Refactorings" as a reference. With that prerequisite in mind, this text does an excellent job of introducing the process of using refactorings to fix code problems by introducing patterns into your design.
Some of the strongest points include: editing, organization, and clarity. My hat goes off to the editor(s) of this book as I found very few errors even though this book contains a lot of "real world" code. Organizationally, this book does an excellent job of making itself useful as a "read-through" book for those that want to immerse themselves in the topic and as a reference book that can sit on your shelf until you need it.
One word of caution about this book is that it originally started as a paper and grew from there. Especially throughout the first few chapters of the book, this is very evident. Constant references to works done by other authors and numerous footnotes can, at times, become a bit distracting from the overall message.
Overall, this is an excellent book and, if you're into extreme programming and refactoring, it's one that you're going to want to have on your shelf.
Wonderful! Brings patterns into coding, not just designing - Review written on September 19, 2004
Rating: 5 out of 5
39 customers found this review helpful, 3 did not.
Based on its title alone I had high expectations for this book. It didn't disappoint. The book takes two of the most important advances of the past decade (patterns and refactoring) and puts them together into a whole that is definitely more than the sum of its parts.
I've read many good patterns books and have been applying patterns to how I think and talk about software since the original "Design Patterns" book in 1995. However, something was always missing. Through my consulting work, whenever I introduced patterns to a new team they would take quickly to the idea and patterns would become part of how they thought-but only when designing, not when coding. Since we spent more time coding than designing, patterns played less of a role than they could have.
This book does an excellent job of bringing patterns into coding, rather than relegating them just to design discussions. As the author points out, "patterns are best viewed in the light of refactoring and that they are destinations best reached by applying sequences of low-level refactorings."
This book has earned a permanent place on my bookshelf. That is, when it's not open beside me as I program. Very highly recommended!
Imposing Title, Well Done Book - Review written on September 10, 2004
Rating: 5 out of 5
5 customers found this review helpful, 4 did not.
If you're thinking about this book, and you probably wouldn't be reading this if you weren't, you may just be puzzled by the title, or you may be wondering just what it's all about. No, it has nothing to do with cloth or wall paper. It's about software programming. Perhaps someone told you about this book and you're wondering what it is all about.
Refactoring, simply put is re-writing code to make it simpler, easier to understand without changing what the code does.
Patterns are simply common solutions to recurring problems faced by programmers.
This book is not intended to be your first programming book. But if you are working as a professional programmer, this book can help you write better, tighter, faster, easier to modify code. The title is the most imposing, even frightening part of the book. Inside it is clearly written and provides a lot of hints, tips and suggestions that are worth quite a lot.