Most helpful critical review
51 of 52 people found the following review helpful
Disappointing revision of a classic.
on January 8, 2010
I've been reading "Refactoring, Ruby Edition" alongside the original edition, which I bought used a few months ago, not knowing that this book was in the works.
One thing I've learned is that the original is an excellent book, one that probably ranks with "Design Patterns" in practical programming literature. Second, the revising authors added some valuable new material on refactoring in a Ruby environment.
However, "Refactoring, Ruby Edition" seems in some ways to be a sloppy and poorly-edited attempt to cash in on the original. I've found errors on almost every page I've read. It looks as if someone cut and paste the text from the original into a new document, quickly converted the Java examples to Ruby (without testing or review, given some of the errors), and went to press.
My guess is that this was the idea of someone who knows that there are lots of new Ruby programmers who don't have a grounding in Java and are therefore intimidated by the original book. That idea is fine -- Russ Olsen's "Design Patterns in Ruby" seems to be a thorough and careful reworking of that book for a Ruby audience -- but the execution here is really lame. Here are some specifics:
* There are many errors in the code examples and UML diagrams that make them difficult to follow. Until you realize they're errors, you think you're missing something; that kind of thing is tough for novice programmers to identify and correct for. (Ironically, given that the name of the book is "refactoring", these errors aren't in the first edition.)
* The original edition contained illustrative anecdotes about refactoring practice that were clearly presented as call-outs with graphic design techniques like boxing and shaded backgrounds. These design hints are missing from the new edition, and the anecdotes (by other authors) interrupt the text in a confusing way, since they look like a regular part of the text-flow.
* The reader is advised to use the "table in the inside back cover" to identify and address code smells, but there is no table in the inside back cover. There is one in the original edition, however, and it's quite useful. Who knows whether the table was supposed to be included but was forgotten, or was intentionally left out to cut costs?
It seems like no one took another look at this book once the first-draft manuscript was in hand. Martin Fowler and Jay Fields have contributed an enormous amount to the industry, and I'm surprised they would put their names on something this sloppy. Addison-Wesley charges a lot for their books, and they should provide a carefully-edited product in return.