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
 
 
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
5.0 out of 5 stars  See all reviews (1 customer review)
Price: £12.50 & this item Delivered FREE in the UK with Super Saver Delivery. See details and conditions
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.
Dispatched from and sold by Amazon.co.uk. Gift-wrap available.
Only 1 left in stock--order soon (more on the way).
Want guaranteed delivery by Saturday, June 2? Choose Express delivery at checkout. See Details

Formats

Amazon Price New from Used from
Paperback £12.50  
Amazon.co.uk Trade-In Store
Did you know you can trade in your old books for an Amazon.co.uk Gift Card to spend on the things you want? Plus, get an extra £5 Gift Certificate when you trade in books worth £10 or more before June 30, 2012. Visit the Books Trade-In Store for more details.


Product details

  • Paperback: 248 pages
  • Publisher: Shroff Publishers & Distributors Pvt Ltd (1 Dec 2005)
  • Language English
  • ISBN-10: 8184040091
  • ISBN-13: 978-8184040098
  • Product Dimensions: 22.8 x 17.6 x 1.2 cm
  • Average Customer Review: 5.0 out of 5 stars  See all reviews (1 customer review)
  • See Complete Table of Contents

More About the Authors

Discover books, learn about writers, and more.

Product Description

Product Description

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.

From the Publisher

Cut back on the refactoring time in your projects with new software design process called "prefactoring." This book presents prefactoring guidelines in design, code, and testing, derived from lessons learned by many developers over the years. With these guidelines, you'll create more readable code before you reach the second-guessing stage. --This text refers to an alternate Paperback edition.

Inside This Book (Learn More)
Browse and search another edition of this book.
Explore More
Concordance
Browse Sample Pages
Front Cover | Copyright | Table of Contents | Excerpt | Index
Search inside this book:

Tag this product

 (What's this?)
Think of a tag as a keyword or label you consider is strongly related to this product.
Tags will help all customers organise and find favourite items.
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 Reviews

4 star
0
3 star
0
2 star
0
1 star
0
Most Helpful Customer Reviews
1 of 2 people found the following review helpful
Format:Paperback
How come now one has reviewed this book before?
Its so good I bought a few to share around my dev team. The basics of the book take the assumption that what if you wrote code that did not need to be 'refactored' after you completed your project. So suppose you wrote highly reusable code in the first place, understood what is a natral target for refactoring, segment that would get reused. What it you thought ahead just a little bit further before you started coding. This book saves you time and money, let along rework costs.
Comment | 
Was this review helpful to you?
Most Helpful Customer Reviews on Amazon.com (beta)
Amazon.com:  20 reviews
37 of 42 people found the following review helpful
Pure D-lite 12 Jan 2006
By wiredweird - Published on Amazon.com
Format:Paperback|Amazon Verified Purchase
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
13 of 16 people found the following review helpful
I think the title is misleading 9 Nov 2005
By Foti Massimo - Published on Amazon.com
Format:Paperback|Amazon Verified Purchase
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.
7 of 8 people found the following review helpful
It's ok but there's better 31 Dec 2006
By Giles Bowkett - Published on Amazon.com
Format:Paperback
Prefactoring is an exposition of principles for software design, laid out in the context of the development of a fictional application. I've never been into that particular style of writing about software design; in fact, it was the only thing I didn't like about Martin Fowler's Refactoring, which is the inspiration for both Prefactoring's own fictional case study and its name as well.

When you've got one programming book named after another one, one reasonable idea is to compare the two. Prefactoring's premise is that, instead of fixing your design afterwards -- an extremely terse summary of Refactoring -- you apply what you've learned from that in the past to build it with the right design principles from the get-go. That sounds like good common sense, and it is. Unfortunately, it really only makes sense in the context of a misunderstanding of Refactoring. Refactoring and debugging are different things. It's very common in software for people to use buzzwords and catchphrases as an alternative to thinking, and consequently, in certain organizations, you'll hear "refactoring" used as a synonym for "debugging."

In fact, refactoring is supposed to happen during debugging -- but it's also supposed to happen during the course of development, and in fact this is the preferred time to do it. Refactoring comes from agile development, specifically Extreme Programming, where the basic cycle is to write unit tests, write the simplest code that can possibly satisfy those tests, refactor that code, and then begin again with new unit tests. Refactoring can mean improving things during debugging, but much more importantly, what it really means is streamlining existing code as you refine it. To say that the best thing to learn from refactoring is to get your code right first time is to use the vocabulary of agile development to advocate waterfall development, and this, in fact, is what Prefactoring often seems to do.

Worse still, many of the code examples are in Java, and they don't use Josh Bloch's guidelines from Effective Java or Java Puzzlers. This might be a quibble, but I'd certainly hire or fire based on this quibble, as I think it's very important (and therefore not a quibble at all). Pretty much everything I've done for months has been in Ruby on Rails, so I'm frequently reminded that Java is not popular in every sector of the tech industry -- however, if you are going to write Java, I personally feel that writing Java without observing Bloch's guidelines is careless at best, and borders on outright negligence.

On the other hand, I seem to be kind of eviscerating this book here, and that's not quite fair. I disagree with some of the design principles laid out in this book, but most of them are pretty strong in the common sense department. Also, software development is one of those things where you can be better off after reading a book even if you disagree with it. For instance, just in criticizing this book's attitude towards refactoring, I've had to question my own understanding of it. If you read this book with the right frame of mind, you'll challenge your own ideas and come to new conclusions, and probably become a better developer in the process.
Search Customer Reviews
Only search this product's reviews

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
 

Search Customer Discussions
Search all Amazon discussions
   


Listmania!

Create a Listmania! list

Look for similar items by category


Look for similar items by subject


Feedback


Amazon.co.uk Privacy Statement Amazon.co.uk Delivery Information Amazon.co.uk Returns & Exchanges