or
Sign in to turn on 1-Click ordering.
or
Amazon Prime Free Trial required. Sign up when you check out. Learn More
More Buying Choices
Have one to sell? Sell yours here
Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability
 
See larger image
 
Tell the Publisher!
I'd like to read this book on Kindle

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability [Paperback]

Ken Pugh (Author)
3.6 out of 5 stars  See all reviews (20 customer reviews)

List Price: $29.95
Price: $26.04 & this item ships for FREE with Super Saver Shipping. Details
You Save: $3.91 (13%)
  Special Offers Available
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.
Want it delivered Monday, January 30? Choose One-Day Shipping at checkout. Details
Textbook Student FREE Two-Day Shipping for Students. Learn more

Formats

Amazon Price New from Used from
Paperback $26.04  
Like this book? Find similar titles from O'Reilly and Partners in our O'Reilly Bookstore.

Book Description

0596008740 978-0596008741 September 8, 2005 1

Prefactoring approaches software development of new systems using lessons learned from many developers over the years. It is a compendium of ideas gained from retrospectives on what went right and what went wrong in development. Some of these ideas came from experience in refactoring. Refactoring is improving the design of existing code to make it simpler and easier to maintain.


This practical, thought-provoking guide details prefactoring guidelines in design, code, and testing. These guidelines can help you create more readable and maintainable code in your next project.

To help communicate the many facets of this approach, Prefactoring follows the development of a software system for a fictitious client, named Sam, from vision through implementation. Some of the guidelines you'll encounter along the way include:

  • When You're Abstract, Be Abstract All the Way
  • Splitters Can Be Lumped Easier Than Lumpers Can Be Split
  • Do a Little Job Well and You May Be Called Upon Often
  • Plan Globally, Develop Locally
  • Communicate with Your Code
  • The Easiest Code to Debug Is That Which is Not Written
  • Use the Client's Language
  • Don't Let the Cold Air In
  • Never Be Silent
  • Don't Speed Until You Know Where You Are Going

Special Offers and Product Promotions

  • Buy $50 in qualifying physical textbooks, get $5 in Amazon MP3 Credit. Here's how (restrictions apply)

Frequently Bought Together

Customers buy this book with Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition) $37.92

Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability + Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition)


Editorial Reviews

About the Author

Ken Pugh has extensive experience in the area of software analysis and design, both as a doer and as a teacher. He's a well-known, frequent conference speaker.


Product Details

  • Paperback: 240 pages
  • Publisher: O'Reilly Media; 1 edition (September 8, 2005)
  • Language: English
  • ISBN-10: 0596008740
  • ISBN-13: 978-0596008741
  • Product Dimensions: 9.4 x 6.9 x 0.6 inches
  • Shipping Weight: 14.9 ounces (View shipping rates and policies)
  • Average Customer Review: 3.6 out of 5 stars  See all reviews (20 customer reviews)
  • Amazon Best Sellers Rank: #1,357,688 in Books (See Top 100 in Books)

More About the Authors

Discover books, learn about writers, read author blogs, and more.

 

Customer Reviews

20 Reviews
5 star:
 (5)
4 star:
 (7)
3 star:
 (5)
2 star:
 (2)
1 star:
 (1)
 
 
 
 
 
Average Customer Review
3.6 out of 5 stars (20 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

34 of 39 people found the following review helpful:
2.0 out of 5 stars Pure D-lite, January 12, 2006
Amazon Verified Purchase(What's this?)
This review is from: Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability (Paperback)
That's "Design Lite." There's a lot of good advice here, summarized in the aphorisms of appendix A. That includes the usual about avoiding "magic numbers," and some good points about using inclusive data types (strings, for example) to hold values with many incompatible meanings. Pugh also noted that "function codes" as method parameters generally cause problems. If there are different functions to perform, implement them as different methods - don't make one method do lots of different jobs according to some selection key. He could have noted, however, that the "function code" is often a bad smell indicating polymorphic behavior that should have been implemented with class polymorphism.

The presentation as a whole just didn't work for me, though. There were lots of little things, like a sloppy misquote of Santayana's famous "Those who cannot remember the past are condemned to repeat it," minor but annoying. The whole conversational, I-said-then-he-said style is too user-friendly for me - by the time the writer finishes piling on all the scripting flourishes, discussion tends to evaporate into fluff. Pugh could have just made his point without chopping it into pieces and mixing in fictional personalities. Much of the good in this discussion was buried under this chatty style, or lost amid the scene-setting details preparatory to the real discussion of planning for extensibility.

The technical problems were the big ones, though. In discussing error handling (p.35), he omits mention of the worst sin I know: silently converting a bad value into something you'd rather deal with. He also missed the biggest extensibility problems I've seen in any system, the ones where external data formats change over time. That happens when your 2.0 program reads a file written by the 1.0 version, and the file format has changed. It can also happen when someone creates a version 2.0 file and sends it to a user still running version 1.0. It happens in worse form when your networked application requires that 2.0 and 1.0 versions of the code talk to each other. Face it, you'll never be able to take down the whole production network and force all the servers to run the same rev of protocol. Inter-version interoperability is a must in any major application, and simply not mentioned here.

There is good in this book, but it is often hidden under poor organization, weak descriptions, and lack of technical explanation. Beginners may get a bit from this book but, on the whole, I don't recommend it.

//wiredweird
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


12 of 15 people found the following review helpful:
4.0 out of 5 stars I think the title is misleading, November 9, 2005
By 
Foti Massimo (Vezia (Switzerland)) - See all my reviews
(REAL NAME)   
Amazon Verified Purchase(What's this?)
This review is from: Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability (Paperback)
I think the title is misleading, the book is little, if any, related to Martin Fowler's seminal work on refactoring, instead, the book is mostly a collection of best practices, much more like "Code Complete" by Steve McConnell. Nothing revolutionary or innovative, but the book reads quite well and provides a nice good walkthrough of a fictional project. Beginners may benefit a lot from this; more seasoned developers may use it as reminder for best practices.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


3 of 3 people found the following review helpful:
5.0 out of 5 stars It's always good to remember the basics, April 6, 2006
By 
This review is from: Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability (Paperback)
This book does what it sets out to do: it describes some wise ideas for software design. (If the name of the book bothers you, get a grip: at least it's short.) Some of these ideas may be familiar to experienced developers, in which case it's a well-written refresher. For some of the ideas, this may be the first time you've seen them described in that way, and a different perspective is also useful.

So, what do I like about this book?

- The ideas are practical, common-sense ones.

- I like the revisiting of a small number of examples, developing them a little more each time as familiar problems with them are identified.

- The book sits comfortably in the world of Agile development, but is not rabid about it.

- Design diagrams are used sparingly, enough to educate and remind, but not overwhelmingly so.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews











Only search this product's reviews




Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
 
(2)

Your tags: Add your first tag
 

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Active discussions in related forums
Search Customer Discussions
Search all Amazon discussions
   
Related forums



So You'd Like to...


Create a guide


Look for Similar Items by Category


Look for Similar Items by Subject