The Patterns Handbook: Techniques, Strategies, and Applications / Edition 1 available in Paperback
![The Patterns Handbook: Techniques, Strategies, and Applications / Edition 1](http://img.images-bn.com/static/redesign/srcs/images/grey-box.png?v11.9.4)
The Patterns Handbook: Techniques, Strategies, and Applications / Edition 1
- ISBN-10:
- 0521648181
- ISBN-13:
- 9780521648189
- Pub. Date:
- 06/28/1998
- Publisher:
- SIGS
![The Patterns Handbook: Techniques, Strategies, and Applications / Edition 1](http://img.images-bn.com/static/redesign/srcs/images/grey-box.png?v11.9.4)
The Patterns Handbook: Techniques, Strategies, and Applications / Edition 1
Paperback
Buy New
$96.00Buy Used
$60.69-
-
SHIP THIS ITEM
Temporarily Out of Stock Online
Please check back later for updated availability.
-
Overview
Product Details
ISBN-13: | 9780521648189 |
---|---|
Publisher: | SIGS |
Publication date: | 06/28/1998 |
Series: | SIGS Reference Library , #13 |
Edition description: | New Edition |
Pages: | 570 |
Product dimensions: | 6.06(w) x 9.06(h) x 1.26(d) |
Read an Excerpt
From Part III: Industrial Experience with Design Patterns
...Industrial Experience with Patterns
Smalltalk Best Practice PatternsKent Beck (First Class Software)
I have been writing what I intend to grow into a comprehensive system of patterns for Smalltalk programming, called the Smalltalk Best Practice Patterns (SBPP). I'll report here on the status of these patterns and my experience teaching them to and watching them used by two clients developing commercial software in Smalltalk.
The SBPP are intended to accelerate the pace at which teams of Smalltalk developers begin realizing the benefits of objects and Smalltalk by communicating the techniques used by expert Smalltalkers. Although many patterns are still under development, a core set of patterns are finished that cover most of the important design and coding problems.
The best developed section contains 90 patterns for coding. It presents successful tactics for Smalltalk-naming conventions, reuse of the collection classes, common control flow patterns, and code formatting. The emphasis throughout is on communicating through code. The patterns are intended to generate code that meets the simple style rule "say everything once and only once." The section on design has 15 patterns, most of which exist only in outline form. When finished, they are intended to cover similar material to Design Patterns. I teach these patterns using presentations similar to "Patterns Generate Architectures." The section on user interface design has 25 patterns for designing user interfaces and 15 patterns for implementing them in Smalltalk. These patterns are not yet ready to be taught. Thefinal section covers project management. These 30 patterns focus on the non-programming tasks of programmerstesting, documentation, and scheduling.
Hewitt Associates
Hewitt Associates has a group of five Smalltalk programmers working on the next generation of a system implemented originally on large, mainframe computers. They have extensive experience with objects, although the team members have varying levels of familiarity with objects and all are new to Smalltalk.
Initially, the team met once a week for several months. As the coding patterns became available, they discussed a few patterns a week. Now that production coding has begun, discussing and learning about programming style is done primarily as part of group code reviews. I spent two days with the team when they started coding seriously. We alternated working on projects with presentation and discussion of the most important patterns.
The resulting code is remarkably good. The most experienced members are making excellent design decisions that I only appreciate after having them explained carefully to me. Even the junior members of the team, new to Smalltalk and objects, are writing idiomatic Smalltalk code. I have noticed the pattern titles becoming part of the spoken vocabulary of the team"Oh, that's a Parameters Object," "We need a Guard Clause here."
Orient Overseas Container Limited (OOCL)
OOCL has a much more ambitious effort, with 25-30 developers working to replace centralized applications with a worldwide distributed architecture. The project grew very quickly, which resulted in some chaos as the team tried to find a common identity and culture.
David Ornstein and I introduced patterns two ways. First, we held two "Smalltalk Bootcamps," where teams of 10-12 develop a simple application from requirements to tested, documented, shipping code in three days. We interspersed discussion of important patterns and software engineering issues with frantic development. The lessons learned here seem to stick very well. In contrast, patterns presented in lecture style were not learned as readily.
An activity we held with some success was a Pattern Bowl. We chose a piece of code to review. We divided the audience (25 developers) into two teams. Each team got points for recognizing the presence or absence of patterns in the review code in a limited amount of time. The winners received guardianship of a token trophy until the next Pattern Bowl. We were happy with the results for two reasons. First, the code in question got a very thorough review. Everyone in the room had a pretty good grasp of what it did and how it did it. You could use a Pattern Bowl to communicate critical shared code. Second, the teams were forced to discuss the meaning of patterns, because there were penalties for mis-identifying a pattern.
Overall, patterns have had a big impact mostly on the early members of the team, five or six bright new Smalltalkers we spent a lot of individual time with. Their designs are sophisticated, their code idiomatic. Later additions, including some experienced Smalltalk programmers, showed reluctance to simply follow the dictates of the patterns, preferring their own style. The unfinished state of the patterns has definitely made teaching them to experienced programmers more difficult.
I have always tried to write may patterns with a substantial section in the middle that presented the motivation for the pattern, why possible alternatives don't work, and led up to the conclusion. OOCL asked me early on to strip all that out, leaving patterns with a name, a problem statement, and a solution. I put together such an abridged version. It has been widely used as a reference and development guide, often being posted on cubicle walls within sight of the workstation...