Professional restaurant supplies Textbook Trade In Amazon Fashion Learn more nav_sap_plcc_ascpsc Sixx AM Fire TV Stick Beauty Gifts Made in Italy Amazon Gift Card Offer out2 out2 out2  Amazon Echo  Echo Dot  Amazon Tap  Echo Dot  Amazon Tap  Amazon Echo Introducing new colors Kindle Paperwhite Spring Arrivals in Outdoor Clothing SnS
Customer Review

32 of 32 people found the following review helpful
3.0 out of 5 stars Ok book, but could've been way better, December 12, 2006
This review is from: php|architect's Guide to PHP Design Patterns (Paperback)
First off I don't enjoy giving a bad mark to other people's effort. It's often too easy to put a tag value on something we had nothing to do with and even bad books are well intentioned. That been said, this book is far from being bad. The content is actually pretty good and Jason E. Sweat succeeds very well in explaining the patterns and their application in PHP. However, there's room for improvement and although I was really looking forward to give some kudos, I did have some issues with the book. I took some time to review it to help make it better in subsequent editions.

My opinions are made upon a few assumptions. Some may agree others may not, which is the point of a personal review, if you share my point of view chances are that you'll experience the same thing.

1) I presume that anyone deciding to learn about design patterns is probably serious about Object Oriented Programming and anyone serious about OOP in PHP should probably switch from PHP4 to PHP5. This book has been out for about a year and a half. PHP5 was already on course to acquire wide acceptance, yet Jason chose to code mainly in PHP4, which is clearly crippled in its OO implementation compared to PHP5.

This is not so much of an issue in chapters where pattern implementation is very similar in both versions, but at times the lack of true OO features in PHP4 made it tedious to go through the examples and I felt like just skipping the PHP4 parts and go straight to the PHP5 ones. It wasn's easy because only some of these examples have a PHP5 equivalent.

We are therefore often confined to make sense of all the PHP4 idiosyncrasies deployed to mimic the simplest features natural to true OOP, like the use of global variables to emulate staticity, prepending the ampersand (&) to pass objects by reference and other little 'tricks' that succeed more at veering attention away from the pattern at hand to language features.

2) I presume that most people who got this book did because of the two keywords in the title 'Design Patterns'. Yet there is as much, if not more, about Test Driven Development (TDD) using Simpletest as there is about design patterns. Don't get me wrong, TDD is an excellent coding practice, but as much as it can be practiced along with design patterns both can be clearly isolated. If, like me, you learn by focusing on one specific topic at a time, you will find this book's approach very annoying at times.

First, it's an informal introduction to TDD. You will probably need more support from a more specific text on TDD before really becoming proficient at it, so I don't see the point in trying to actually teach it along with design patterns. An introductory chapter would have been enough (the Mockobject Pattern chapter was perfect for this) and maybe an appendix with links to tests for the examples for those interested.

Second, Jason's insistence to test every bit of piece of code makes the reading even more tedious. Examples are cluttered with tests and the logic doesn't flow as smoothly anymore. Plus, TDD is an iterative coding process, meaning that you write a little test and then you implement just enough logic for the test to pass, then you add some more test and then you... repeat until done. If in real life the overall result can be good, it is not very practical to try and reproduce it in a book. Your tests may never be exhaustive or meaningful enough to actually matter and you may be constrained to use examples a tad bit too simplistic to illustrate your point, which is exactly what happens in this book.

I felt that the introduction of TDD in the book was meant exactly as a separate attempt at explaining that technique, not as a support to understand design patterns and the two topics became somehow intertwined and less substantial. Trying to chase a rooster and a rabbit, we're left with a chick and a bunny.

Here are my recommendations for the next edition:
- Forget php4
- Keep TDD for another book or introduce it in the mockobject pattern chapter or an appendix
- Concentrate on design patterns
- Include more solid examples
- Work more on refactoring solutions to really show how they remap to patterns
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

[Add comment]
Post a comment
To insert a product link use the format: [[ASIN:ASIN product-title]] (What's this?)
Amazon will display this name with all your submissions, including reviews and discussion posts. (Learn more)
This badge will be assigned to you and will appear along with your name.
There was an error. Please try again.
Please see the full guidelines here.

Official Comment

As a representative of this product you can post one Official Comment on this review. It will appear immediately below the review wherever it is displayed.   Learn more
The following name and badge will be shown with this comment:
 (edit name)
After clicking the Post button you will be asked to create your public name, which will be shown with all your contributions.

Is this your product?

If you are the author, artist, manufacturer or an official representative of this product, you can post an Official Comment on this review. It will appear immediately below the review wherever it is displayed.  Learn more
Otherwise, you can still post a regular comment on this review.

Is this your product?

If you are the author, artist, manufacturer or an official representative of this product, you can post an Official Comment on this review. It will appear immediately below the review wherever it is displayed.   Learn more
System timed out

We were unable to verify whether you represent the product. Please try again later, or retry now. Otherwise you can post a regular comment.

Since you previously posted an Official Comment, this comment will appear in the comment section below. You also have the option to edit your Official Comment.   Learn more
The maximum number of Official Comments have been posted. This comment will appear in the comment section below.   Learn more
Prompts for sign-in


Track comments by e-mail
Tracked by 1 customer

Sort: Oldest first | Newest first
Showing 1-1 of 1 posts in this discussion
Initial post: Apr 10, 2010 10:09:39 PM PDT
I agree. There is a lot of useful information on design patterns in this book, but it's obfuscated by the TDD doctrine.
Having said that, if you will be involved in an environment where design patterns are to be observed and used, you will most likely also be doing unit tests for everything you code.
Maybe the problem is the title. I would title this book "Learning Design Patterns Through Unit Testing".
‹ Previous 1 Next ›

Review Details